首页 > 解决方案 > 使用正则表达式递归拆分字符串

问题描述

我如何从这个输入到下面的输出?

word = "f(a(a,b), b(c,d))

def convert(word):    
    ...
    return fixed_word

print(convert(word))

>> ["f", "(a(a,b), b(c,d))"]

此外,我将如何递归创建列表?例如,如果我希望列表看起来像:

word = "f(a(a,b), b(c,d))

print(convert(word))

>> ["f", "a", "a", "b", "b", "c", "d"]

我已经尝试为此使用正则表达式,但没有设法提出有效的解决方案,因此非常感谢任何帮助。

标签: pythonpython-3.x

解决方案


我不完全确定您希望实现什么,但对于您的第一个示例,我会推荐如下内容:

mo = re.match(re.compile(r"(\w)(\(.*\))"), word)
#                            f   (a(a,b)...)
result = list(mo.groups()) # or just mo.groups() if it can be a tuple instead of a list

对于第二个问题,如果您只想拆分单个字符,我会向您推荐您获得的其他答案。但是,如果您需要多个字符,则可以将字符串拆分为任何非单词字符,例如:

word = "f(a(ab,bc), ba(c,d))"
result = re.split(re.compile(r"\W+"), word)
# ['f', 'a', 'ab', 'bc', 'ba', 'c', 'd', '']

如果您在使用正则表达式时遇到问题,它可能会帮助您找到像regex101这样的网站,当然还可以查看re 模块的文档


推荐阅读