regex缺少一个表达式

regex缺少一个表达式,r,R,从下面的文本中,我只需要mn12,但我没有得到它。对于第一个表达式,我得到mn12以及mn14。我只需要mn12 请用一些东西更改以下内容。mn12*操作0010为mn14-f10 '\\b(m|s|x|p)(n|s|t)[[:alnum:]]{2}\\b') '\\b(m|s|x|p)(n|s|t)[[:alnum:]]{2}[^-]\\b') 请告诉我哪里出了问题 您需要将数字限制在1-2之间。 通常[1-9]捕获1到9之间的数字,因此在您的情况下,它将是[1-2] '\\b(m|s|x

从下面的文本中,我只需要
mn12
,但我没有得到它。对于第一个表达式,我得到
mn12
以及
mn14
。我只需要
mn12

请用一些东西更改以下内容。mn12*操作0010为mn14-f10

'\\b(m|s|x|p)(n|s|t)[[:alnum:]]{2}\\b')
'\\b(m|s|x|p)(n|s|t)[[:alnum:]]{2}[^-]\\b')

请告诉我哪里出了问题

您需要将数字限制在1-2之间。 通常[1-9]捕获1到9之间的数字,因此在您的情况下,它将是[1-2]


'\\b(m|s|x|p)(n|s|t)[1-2]{2}\\b'

你的
[[:alnum:]{2}
并不意味着“后面跟2的任何数字”。它的意思是“两位数的任意序列”

您使用[:alnum:]而不是
\\d
有什么原因吗

如果您希望捕获
mn12
,而不是
mn14
,请使用

'\\b(m|s|x|p)(n|s|t)[[:alnum:]]2\\b'

根据您的评论,如果您需要2个小写字符后跟2位数字,那么它就是,
\\b[a-z]{2}\\d{2}\\b

数字可以是任何数字。它可以是ms79,我们可以说前两个是字符,然后下两个是字母数字,然后是空格使用这个:'\\b(m | s | x | p)(n | s | t)[0-9]2\\b'