假设我有一个看起来像的字符串
test = 'this is a (meh) sentence that uses (random bits of meh2) and (this is silly)'
如果包含“meh”一词,我只想提取括号内的文本。
执行常规的非贪婪正则表达式以匹配括号内的任何内容:
re.findall(r'\((.*?)\)', test)
退货
['meh', 'random bits of meh2', 'this is silly']
试图这样做只包含第一和第二个内容:
re.findall(r'\((.*meh.*?)\)', test)
退货
['meh) sentence that uses (random bits of meh2']
我想要一个正则表达式只返回
['meh', 'random bits of meh2']
有人可以帮忙吗?谢谢!
最佳答案
通过使用 [^\)]
现在 .
所在的位置,您可以允许除右括号之外的所有字符,而不是允许所有字符。
re.findall(r'\(([^\)]*meh[^\)]*?)\)', test)
关于python - 括号内的非贪婪正则表达式并包含文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50730070/