2017-08-13 85 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

打我吧^ –

相关问题