请解释这个正则表达式的含义以及表达式将生成哪些组?
$string =~ m/^(\d*)(?: \D.*?)(\d*)$/
PS:我正在将Perl代码重新分解为Java。
答案 0 :(得分:3)
这意味着它不是捕获组。成功匹配后,(\d*)
将首先捕获$1
,$2
中捕获第二(?: \D.*?)
,并且根本不会捕获$string =~ m/^(\d*)(?: \D.*?)(\d*)$/
。
{{1}}
非捕获分组
捆绑一组备选方案所需的组可能会或可能不会用作捕获组。如果不是,它只会在正则表达式内部和外部创建一组可用捕获组值的多余内容。非捕获分组(由(?: regexp)表示)仍允许将正则表达式视为单个单元,但不会同时建立捕获组。