2017-08-13 173 views
-2

我想在Python中理解這個正則表達式:\([^\(\)]*\這個正則表達式是什麼意思:[^ ()] *?

完整的代碼如下。它反轉括號內的文字。

import re 

def reverseParentheses(s): 
    s_new = s 
    count = 0 
    while True: 
     mat = re.findall(r'\([^\(\)]*\)',s_new) 
     if not mat: 
      break 
     for i in mat: 
      temp = re.sub(r'\(|\)', '', i) 
      s_new = re.sub(re.escape(i), temp[::-1], s_new) 
    return(s_new) 
+3

例如,在https://regex101.com/輸入此表達式。它會給你一步一步的解釋。 –

回答

2

讓我們打破它:

\( \) 
Start with (and ends with) 

[]* 
^ A char that is part of the char-group any number of times. 

^ 
^ Not one of the following chars 

\(\) 
^ (or) - because they appear inside the char-group 

所以基本上,如果我們採取這樣的:

[^\(\)]* 
^ Any char that is not (and not), any number of times. 

如果我們結合上述所有我們得到這樣的:

(後跟任何c開頭的字符串HAR是不(和不)並用)

0

結束\通常是準與d,或一個表示十進制或一些其它類型的字面某些其它字符。在這種情況下它只是意味着字面「(」

R「\(」 >>> R(

[]是表示任何組字符串(即[ABC]將從代表什麼的托架或者A,b,或C

^東西固定在串組開始時(即^一會看在字符串中沒有一) [^ ABC]看起來不a或b或c 或在這種情況下,不文字(而不是文字)

  • 表示模式匹配ED要麼0,1,2,3 ...或多次

'\)' >>>)

一個例子:R()是最小

R(() ))))將失敗

R(((((()將失敗

R())將失敗,因爲你可以看到[^()]時固定

R(LITERALL Y除'('或')'以外的任何地方

+0

打我吧^ –

相關問題