例如我有字符串:
"one two (78-45ack sack); now (87 back sack) follow dollow (59 uhhaaa)"
我只需要带括号的整个子串,包含单词"back"
,对于这个字符串,它将是:
"(87 back sack)"
我试过了:
(\(.*?back.*?\))
但它返回"(78-45ack sack); now (87 back sack)"
我的正则表达式应该如何?正如我所理解的那样,正在进行搜索从字符串的开头开始,共同点 - 如何从字符串中间对"search"
执行正则表达式,来自单词"back"
? < / p>
答案 0 :(得分:3)
您可以根据否定的字符类使用此正则表达式:
\([^()]*?back[^()]*\)
[^()]*
匹配任何不是(
和)
的字符中的0个或更多字符,从而确保我们不会在(...)
对中匹配。 或者,您也可以使用此正则表达式基于负正则表达式:
\((?:(?!back|[()]).)*?back[^)]*\)
(?!back|[()])
是负面预测,声称当前位置在文本中没有back
或(
或)
。(?:(?!back|\)).)*?
匹配任何未提前back
或(
或)
的字符中的0个或更多。[^)]*
匹配)
以外的任何内容。答案 1 :(得分:0)
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]
答案 2 :(得分:0)
尝试以下模式以进行不情愿的匹配
图案=&#34; \&#34(* \。?);