如何在嵌套括号中查找字符串 假设我有一个字符串
uv(wh(x(yz))
我想找到括号中的所有字符串(所以 wh、x、yz)
import re
s="uuv(wh(x(yz))"
regex = r"(\(\w*?\))"
matches = re.findall(regex, s)
上面的代码只找到yz
我能否修改此正则表达式以找到所有匹配项?
最佳答案
要获取所有带括号的文本:
import re
def get_all_in_parens(text):
in_parens = []
n = "has something to substitute"
while n:
text, n = re.subn(r'\(([^()]*)\)', # match flat expression in parens
lambda m: in_parens.append(m.group(1)) or '', text)
return in_parens
例子:
>>> get_all_in_parens("uuv(wh(x(yz))")
['yz', 'x']
注意:由于括号不平衡,结果中没有'wh'
。
如果括号是平衡的;它返回所有三个嵌套的子字符串:
>>> get_all_in_parens("uuv(wh(x(yz)))")
['yz', 'x', 'wh']
>>> get_all_in_parens("a(b(c)de)")
['c', 'bde']
关于python - 查找嵌套括号中的所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40552212/