python - 查找嵌套括号中的所有字符串

标签 python regex string

如何在嵌套括号中查找字符串 假设我有一个字符串

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/

相关文章:

regex - 递归查找和替换(某些文件除外)

java - 如何用正则表达式替换字符序列?

python - 使用ansible从字符串中提取数字

string - 根据 Pandas 中其他两列的条件创建一个列

python - 有没有办法将元素列表映射到字典而无需循环?

python - 将 for 循环的输出保存到文件

python解包for循环

javascript - 在 iPhone、Python Flask-SocketIO 和 Javascript 上测试 websocket 应用程序

python - 使用 re.search 搜索有限范围内的字符串

javascript - 比较jquery中的相似字符串