正则表达式在包含精确子字符串的括号之间查找整个子字符串
Regex find whole substring between parenthesis containing exact substring
例如我有字符串:
"one two (78-45ack sack); now (87 back sack) follow dollow (59 uhhaaa)"
我只需要带括号的整个子字符串,包含单词 "back"
,对于这个字符串它将是:
"(87 back sack)"
我试过:
(\(.*?back.*?\))
但它是 return "(78-45ack sack); now (87 back sack)"
我的正则表达式应该是什么样的?据我了解,它的发生导致搜索从字符串的开头开始,共同点 - how to perform regex to "search"
from the middle of string, from the word "back"
?
您可以根据取反字符使用此正则表达式 class:
\([^()]*?back[^()]*\)
[^()]*
匹配 0 个或多个非 (
和 )
的字符,从而确保我们不匹配 (...)
对。
或者,您也可以使用基于负正则表达式的正则表达式:
\((?:(?!back|[()]).)*?back[^)]*\)
(?!back|[()])
是否定前瞻,断言当前位置在文本中没有 back
或 (
或 )
。
(?:(?!back|\)).)*?
匹配 0 个或多个前面没有 back
或 (
或 )
的字符。
[^)]*
匹配除 )
. 之外的任何内容
h="one two (78-45ack sack); now (87 back sack) follow dollow (59 uhhaaa)"
l=h.split("(")
[x.split(")")[0] for x in l if ")" in x and "back" in x]
尝试以下模式进行不情愿的匹配
pattern="\(.*?\)"
例如我有字符串:
"one two (78-45ack sack); now (87 back sack) follow dollow (59 uhhaaa)"
我只需要带括号的整个子字符串,包含单词 "back"
,对于这个字符串它将是:
"(87 back sack)"
我试过:
(\(.*?back.*?\))
但它是 return "(78-45ack sack); now (87 back sack)"
我的正则表达式应该是什么样的?据我了解,它的发生导致搜索从字符串的开头开始,共同点 - how to perform regex to "search"
from the middle of string, from the word "back"
?
您可以根据取反字符使用此正则表达式 class:
\([^()]*?back[^()]*\)
[^()]*
匹配 0 个或多个非(
和)
的字符,从而确保我们不匹配(...)
对。
或者,您也可以使用基于负正则表达式的正则表达式:
\((?:(?!back|[()]).)*?back[^)]*\)
(?!back|[()])
是否定前瞻,断言当前位置在文本中没有back
或(
或)
。(?:(?!back|\)).)*?
匹配 0 个或多个前面没有back
或(
或)
的字符。[^)]*
匹配除)
. 之外的任何内容
h="one two (78-45ack sack); now (87 back sack) follow dollow (59 uhhaaa)"
l=h.split("(")
[x.split(")")[0] for x in l if ")" in x and "back" in x]
尝试以下模式进行不情愿的匹配
pattern="\(.*?\)"