2010-10-19 56 views
2

我想匹配某些符号,只有当它们没有被特定字符作为前缀时。例如,匹配“))))))))))”当它不在前面时“x”。需要一些建议。我目前的经验是python正则表达式问题

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

哪些不起作用。

[编辑]重组我的问题

+1

你希望完成什么工作? – BoltClock 2010-10-19 09:59:13

+0

@BoltClock,我想匹配捕获的组中的项目,比如'))))')')')')))))''当它们没有被前后组中的字符作为前缀/ – goh 2010-10-19 10:05:59

+3

Python不支持前向引用。 – SilentGhost 2010-10-19 10:14:34

回答

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

1

使用补充字符类: '[^x\)](\)+)'
不应前缀将被放置x,与)带齐您的特定字符。