2015-07-10 122 views
0

我用正則表達式不太好。我使用下面的正則表達式來替換字符串中的某個單詞,但前提是該單詞沒有出現在引號內。在正則表達式中處理不平衡括號

re.sub(r'("[^"]*")|%s' %word, lambda m: m.group(1) if m.group(1) else "", query) 

它工作的很好。除了當query = MBA in Human Resource Management (Jaipur National University),我得到以下錯誤。

error: unbalanced parenthesis 

字在這個實例(該值齋浦爾

我怎樣才能解決這個正則表達式來處理不平衡括號?

回答

2

的問題是,當word"(Jaipur",你的正則表達式是r'("[^"]*")|(Jaipur',但你想要它是r'("[^"]*")|\(Jaipur'。要解決此問題,您可以使用re.escape(word)而不是僅使用word

re.sub(r'("[^"]*")|%s' % re.escape(word), lambda m: m.group(1) if m.group(1) else "", query) 

(見the documentation for re.escape。)