例如字符串:
bla bla bla (bla oops bla
bla bla bla
bla bla bla) bla oops
bla bla bla
oops bla (bla bla oops
bla)
我怎样才能在方括号之间得到“哎呀”? 首先,我得到方括号之间的文本:
(?<=\()([\w\W]*?)(?=\))
我可以在捕获组中的同一个正则表达式捕获组中(在捕获组中找到“ oops”)吗?
答案 0 :(得分:1)
您可以使用
(?:\G(?!\A)|\()[^()]*?\Koops
或者,如果必须检查右括号,请在末尾添加前瞻:
(?:\G(?!\A)|\()[^()]*?\Koops(?=[^()]*\))
请参见regex demo。
详细信息
(?:\G(?!\A)|\()
-(
或上一场比赛的结束(\G(?!\A)
)[^()]*?
-(
和)
之外的0个以上的字符\K
-match reset operator oops
-您需要的单词(如果您需要整个单词匹配,请用\b
包装)(?=[^()]*\))
-一个positive lookahead,要求除首个(
以外的0+个字符,直到第一个)
才能立即显示在当前位置。答案 1 :(得分:0)
您可以使用以下正则表达式:
(?<=\()([\w\W]*?(oops)[\w\W]*?)(?=\))
基本上,它会注入Group
来寻找'oops'
,然后将被捕获的Group之前和之后匹配的'[\w\W]*?
'加倍。
现在'oops'
将在Group 2
中。