1

希望你能在这里提供帮助

我希望匹配以下正则表达式中的字符串,\2 不匹配 \4。

^(\w{2,5}[FGHJKMNQUVXZ])(\d)-(\w{2,5}[FGHJKMNQUVXZ])(\d)$

我尝试了一个 char 类:

^(\w{2,5}[FGHJKMNQUVXZ])(\d)-(\w{2,5}[FGHJKMNQUVXZ])[^\2]$

但是我的正则表达式库(C++ boost)抱怨 \2 是一个无效的八进制。

我认为环顾四周是答案,但是,

^(\w{2,5}[FGHJKMNQUVXZ])(\d)-(\w{2,5}[FGHJKMNQUVXZ])(?!\2)$

也不工作。

有什么线索吗?

非常感谢

TC

4

1 回答 1

3

(?!\2)是一个零宽度断言,不消耗字符。由于它后面是$,这意味着如果该位置实际上有一个数字,即使它不匹配,正则表达式也不会匹配\2。试试这个:

^(\w{2,5}[FGHJKMNQUVXZ])(\d)-(\w{2,5}[FGHJKMNQUVXZ])(?!\2)(\d)$
于 2013-05-31T14:57:02.843 回答