这个正则表达式意味着什么:[^ \(\)] *?

时间:2017-08-13 23:06:41

标签: python regex expression

我想在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)

2 个答案:

答案 0 :(得分: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.

如果我们将上述所有内容结合起来,我们会得到类似的结果:

  

(开头的字符串,后跟任何非(而非)且以)结尾的字符

答案 1 :(得分:0)

\通常与d或其他表示小数或其他类型文字的字符相关联。在这种情况下,它只是意味着文字'('

r' \('>>> r(

[]是一个代表任何字符串集的括号(即[abc]代表a,b或c中的任何字符串

^锚定到字符串集开头的东西(即^ a将在字符串中查找没有a) [^ abc]查找不是a或b或c 或者在这种情况下不是文字(而不是文字)

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

' \)' >>> )

一个例子:r()是最小值

r(()))))会失败

r((((((()将失败

r())会失败,因为你可以看到[^()]被锚定

r(其他任何例外情况'('或')'