2010-10-19 48 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,與)帶齊您的特定字符。