python正则表达式问题

时间:2010-10-19 09:55:14

标签: python regex

我希望仅在某些符号没有特定字符作为前缀时匹配它们。例如,匹配“))))))))))”当它没有前面的“x”时。需要一些建议。我目前的经历是

(?<!x|X|:|=|\\1)([\|()\[\]])+

哪个不起作用。

[编辑]改述我的问题

2 个答案:

答案 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”)