2014-03-12 93 views
0

我试过以下正则表达式:奇怪的正则表达式

模式:(([。[^ [0-9])+)(([0-9] {1,3}([。] [0-9] {3})+)|([0-9] +))

我的目标是匹配任何字符串(不包括数字),后面跟着指定的数字,例如MG2999,dasdassa33232

我用上面的正则表达式。

这很奇怪如下:

V375(不匹配)

Vv375(匹配)

Vvv375(不匹配,但第一个字符是不匹配的)

Vvvv375(匹配)

...

我没有你理解为什么第一个字符永远不匹配。我需要你的帮助吗?

您的快速测试,请尝试:http://regex101.com/

提前感谢!

- 武

+1

“匹配字母后跟一个数字”:'[a-zA-Z] + \ d +' –

+0

您的这些字符不包含Unicode字符。我的号码也有点不同。我的模式错了吗? – user746317

+0

你要求*字母*字符。 Unicode字符不一定是字母。你的模式考虑了小数的数字,但没有一个示例显示它是需要的,所以我摆脱了那部分。 –

回答

1

(.[^[0-9])+)匹配任何字符.),随后任何字符除了数字和[,反复进行。

您可能想要[^0-9]+在这里 - 或者更简单,\D+

其余的正则表达式有类似的问题,但因为我不知道你想匹配的数字格式,我不能纠正这种情况。

+0

我认识了我的错误。其实,(([^ 0-9])+)(([0-9] {1,3}([。] [0-9] {3})+)|([0-9] +))与Boost.regex正常工作。谢谢! – user746317