我试图在我的数据中单独找到并捕获(和)内的所有数字,忽略其余的数字。
我的数据看起来像这样
21 [42] (12) 19 25 [44] (25 26 27) 17 (14 3) 8 1 6 (19)
所以我想查找12
,25
,26
,27
,14
,3
和{{1}的匹配项}
我尝试19
,但这只会给我\((\d+)\)*
,12
,25
,14
感谢任何帮助。
答案 0 :(得分:1)
您可以将正向前瞻与前瞻阴性相结合,以获得所需的效果。
(\d+)(?=(?:.(?!\())*\))
正则表达式:
( group and capture to \1:
\d+ digits (0-9) (1 or more times)
) end of \1
(?= look ahead to see if there is:
(?: group, but do not capture (0 or more times)
. any character except \n
(?! look ahead to see if there is not:
\( '('
) end of look-ahead
)* end of grouping
\) ')'
) end of look-ahead
查看demo
答案 1 :(得分:0)
答案 2 :(得分:0)
我没有看到任何筑巢。嵌套意味着这样的事情:
12 (34 (56) 78) 90
如果你真的有这样的数据 - 特别是如果你不知道嵌套有多深 - 我建议你不要使用正则表达式。但你的问题看起来很简单;这应该是你所需要的:
\d+(?=[^()]*\))
与其他答案一样,前瞻声明前方有一个闭合支架,此处和那里之间没有开口括号。我也排除了关闭括号,主要是为了提高效率。否则它最初会在)
之后放大,只需要回溯到它。