python - 正则表达式查找括号之间包含确切子字符串的整个子字符串

标签 python regex string substring parentheses

例如我有字符串:

"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 匹配(...)对。

RegEx Demo 1

<小时/>

或者,您也可以基于负正则表达式使用此正则表达式:

\((?:(?!back|[()]).)*?back[^)]*\)

RegEx Demo 2

  • (?!back|[()]) 是负向前瞻,断言当前位置没有 back() 在文本前面。
  • (?:(?!back|\)).)*? 匹配 0 个或多个没有 back( ) 前面。
  • [^)]* 匹配除 ) 以外的任何内容。

关于python - 正则表达式查找括号之间包含确切子字符串的整个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39558667/

相关文章:

python - CPython 内部结构

python - PhantomJS - 权限被拒绝

regex - 在 Vim 中,如何交换 2 个不相邻的模式?

android - 将字符串拆分为数组,添加到数组然后转换回字符串

android - 使用 strings.xml 中的文本和值填充 ListView

python - Python (Django) 的专业体验可与 Ruby on Rails 媲美吗?

python - 如何选择vtkVolumeMapper使用的标量

php - 根据 "divider"个字符将PHP字符串分成数组子串

Python/正则表达式/findall : How do I extract a pattern from behind the match?

android - 单击列表项而不是启动另一个 Activity 后应用程序不断崩溃