什么?:正则表达式意味着什么?

时间:2014-10-11 11:24:19

标签: regex perl regex-group

请解释这个正则表达式的含义以及表达式将生成哪些组?

$string =~ m/^(\d*)(?: \D.*?)(\d*)$/

PS:我正在将Perl代码重新分解为Java。

1 个答案:

答案 0 :(得分:3)

这意味着它不是捕获组。成功匹配后,(\d*)将首先捕获$1$2中捕获第二(?: \D.*?),并且根本不会捕获$string =~ m/^(\d*)(?: \D.*?)(\d*)$/

{{1}}

来自perldoc perlretut

  

非捕获分组

     

捆绑一组备选方案所需的组可能会或可能不会用作捕获组。如果不是,它只会在正则表达式内部和外部创建一组可用捕获组值的多余内容。非捕获分组(由(?: regexp)表示)仍允许将正则表达式视为单个单元,但不会同时建立捕获组。