我希望仅在某些符号没有特定字符作为前缀时匹配它们。例如,匹配“))))))))))”当它没有前面的“x”时。需要一些建议。我目前的经历是
(?<!x|X|:|=|\\1)([\|()\[\]])+
哪个不起作用。
[编辑]改述我的问题
答案 0 :(得分:1)
使用补充字符类:
'[^x\)](\)+)'
所有不应加上前缀的特定字符都将与x
一起放置)
。
答案 1 :(得分:1)
re.search(r"(?<![x)])\)+", text)
>>> re.search(r"(?<![x)])\)+", " hello)))))")
<_sre.SRE_Match object at 0xb75c0c98>
>>> _.group()
')))))'
>>> re.search(r"(?<![x)])\)+", " hellox)))))")
>>>
这使用了“negative lookbehind assertion”:我们想要尽可能多的括号,而不是前面加上“x”或“)”(后者因为否则,我们会从第二个开始得到括号括号,前面有第一个括号,因此不是“x”)