我想在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)
答案 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 或者在这种情况下不是文字(而不是文字)
' \)' >>> )
一个例子:r()是最小值
r(()))))会失败
r((((((()将失败
r())会失败,因为你可以看到[^()]被锚定
r(其他任何例外情况'('或')' )