假设我有一个看起来像的字符串

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/

10-12 16:55