例如我有字符串:
"one two (78-45ack sack); now (87 back sack) follow dollow (59 uhhaaa)"
我只需要带括号的整个子字符串,包含单词“back”
,对于这个字符串它将是:
"(87 back sack)"
我已经尝试过:
(\(.*?back.*?\))
但它返回“(78-45ack sack);现在(87 back sack)”
我的正则表达式应该是什么样子?据我了解,发生这种情况的原因是从字符串的开头进行搜索,共同点 - 如何从字符串的中间,从单词 “back” 执行正则表达式到
?“search”
最佳答案
您可以根据否定字符类使用此正则表达式:
\([^()]*?back[^()]*\)
[^()]*
匹配 0 个或多个非(
和)
的任何字符,从而确保我们不会' t 匹配(...)
对。
或者,您也可以基于负正则表达式使用此正则表达式:
\((?:(?!back|[()]).)*?back[^)]*\)
(?!back|[()])
是负向前瞻,断言当前位置没有back
或(
或)
在文本前面。(?:(?!back|\)).)*?
匹配 0 个或多个没有back
或(
或)
前面。[^)]*
匹配除)
以外的任何内容。
关于python - 正则表达式查找括号之间包含确切子字符串的整个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39558667/