在正则表达式中很奇怪

时间:2014-03-12 10:06:56

标签: c++ regex boost

我尝试了以下正则表达式:

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

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

我使用了上面的正则表达式。

这很奇怪如下:

V375(不匹配)

Vv375(匹配)

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

Vvvv375(匹配)

...

我不明白为什么第一个角色永远不会匹配。我需要你的帮助吗?

要进行快速测试,请尝试:http://regex101.com/

提前致谢!

- VU

1 个答案:

答案 0 :(得分:1)

(.[^[0-9])+)匹配任何字符.),然后重复除数字和[ 之外的任何字符。

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

其余的正则表达式有类似的问题,但由于我不知道你想要匹配的数字格式,我无法纠正。