假设您有这样一个字符串:"(hello) (yes) (yo diddly)"
。
你想要这样的列表:["hello", "yes", "yo diddly"]
你会如何使用 Python 来做到这一点?
最佳答案
import re
pattern = re.compile(r'\(([^)]*)\)')
该模式与您的字符串 (\(...\)
) 中的括号匹配,这些需要转义。
然后它定义了一个子组 ((...)
) - 这些括号是正则表达式语法的一部分。
子组匹配除右括号 ([^)]*
) 以外的所有字符
s = "(hello) (yes) (yo diddly)"
pattern.findall(s)
给予
['hello', 'yes', 'yo diddly']
更新:
最好使用 [^)]+
而不是 [^)]*
。后者也会匹配一个空字符串。
按照 DSM 的建议,使用非贪婪修饰符可以使模式更易读:pattern = re.compile(r'\((.+?)\)')
关于Python按开始和结束字符拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12231193/