前瞻性的反向引用

时间:2013-05-31 14:53:48

标签: regex perl sed awk

希望你能在这里提供帮助

我希望匹配以下正则表达式中的字符串,\ 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

1 个答案:

答案 0 :(得分:3)

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

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