Regex 正则表达式捕获的字符太多

Regex 正则表达式捕获的字符太多,regex,Regex,我有一个正则表达式,我试图得到方括号内超过3个字符长的第一个数字。但正则表达式似乎抓住了方括号。据我所知,捕获是用圆括号完成的。那么,为什么捕获包括[12345] 说清楚点,我只想要12345号 var pattern = @"^\s{0,2}\[([0-9]{3,})\]"; 这就是: 可能空间2个字符 方括号开瓶器 开放式支架 数字范围0到9 3个或更多字符 闭合捕捉支架 方形封闭支架 范例 文本:[2090]fdksljkl fdsa 捕获的值:[2090] 为什么不

我有一个正则表达式,我试图得到方括号内超过3个字符长的第一个数字。但正则表达式似乎抓住了方括号。据我所知,捕获是用圆括号完成的。那么,为什么捕获包括[12345]

说清楚点,我只想要12345号

var pattern = @"^\s{0,2}\[([0-9]{3,})\]";
这就是: 可能空间2个字符 方括号开瓶器 开放式支架 数字范围0到9 3个或更多字符 闭合捕捉支架 方形封闭支架

范例 文本:[2090]fdksljkl fdsa 捕获的值:[2090]

为什么不是2090?我怎么能只捕获2090个

捕获括号显然仅在数字范围0-9附近。为什么它使用方括号?宇宙不再有意义[对我来说:]


很抱歉,如果这类问题已经被问得死去活来-我尝试了很多次搜索,但找不到满意的答案。提前感谢。

我认为您的解决方案是可行的,您只需要捕获组1而不是组0的结果,正如您在这些ruby示例中看到的:

irbmain:008:0>/^\s{0,2}\[[0-9]{3,}\]/.match'[2090]fdksljkl fdsa' => irbmain:009:0>结果[0] => [2090] irbmain:010:0>结果[1] => 2090 但是,如果您的语言不支持这样做,或者您需要在一行中返回:

irb(main):013:0> result = /(?<=\[)([0-9]{3,})(?=\])/.match('[2090] fdksljkl fdsa')
=> #<MatchData "2090" 1:"2090">
irb(main):014:0> result[0]
=> "2090"

?您的第一个捕获组通常为整个字符串。注意:你的价值在第一个以绿色突出显示的捕获组中。谢谢你的帮助。这是一个非常清楚的例子,第四个birdRegex.Matchstring,pattern?.Groups[1]。值就是您所需要的。你的regexThank没有问题谢谢你,宇宙又有意义了: