非捕获的lookbehind正则表达式匹配不起作用

时间:2016-02-02 13:51:31

标签: regex

问题陈述如下。

我的描述是

abc abcxxyz 10xabc abcx10 abc10xabc abcx10xyz

只要前缀为数字+ x或后跟x +数字,才能使用匹配abc的正则表达式。

在上面的示例中,它应该与abcx10,10xabc和abcx10xyz中的abc匹配 但不应该捕捉那些比赛中的数字。 这意味着在替换文本时,它应该只替换abcx或xabc。

已尝试(((((?:\d+)))[Xx]))(abc)(\s|$|(([Xx](?=((\d).)+)))|[^a-zA-Z0-9]),但不会从捕获中排除数字。

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

((?<=\d[Xx])abc)|(abc(?=[Xx]\d))

Demo here

请注意,lookbehind不能有任何量词 - 它必须具有已知和定义的长度。

如果你想获得abcx和xabc,版本略有不同:

https://regex101.com/r/cD5hI6/2