如何匹配前面带有偶数“ G”的“ x”?
例如:
x --> Match the 'x'
Gx --> Match nothing
GGx --> Match the 'x'
GGGx --> Match nothing
GGGGx --> Match the 'x'
...
在这里,我尝试使用“背后的负面表情”:
(?<!G(GG)*)x
但是后面的*
量词使宽度变为非固定宽度,因此该模式是错误的。
那我该怎么办?
答案 0 :(得分:2)
您可以使用此正则表达式,
\b(?:[Gg]{2})*\K[xX]\b
此处\b
确保单词不完全匹配,(?:[Gg]{2})*
确保仅匹配G
之前的x
偶数,并且\K
匹配重置运算符确保仅匹配x
,而不匹配整个字符串。
答案 1 :(得分:2)
答案 2 :(得分:1)
您可以将(?<!G(GG)*)x
从后面的位置移出,然后将其变成一个非捕获组,并重复0次以上,{{1} }
相反,如果断言左边不是(GG)
,则可以使用(?:GG)*
断言它不是非空格字符,因为G
表示“ ”有效,并将与\S
最后使用(?<!G)
忘记匹配的内容并匹配x
ax
答案 3 :(得分:0)
这是您要找的吗?
pcx
匹配组3应该给您x