【发布时间】:2014-12-06 11:44:37
【问题描述】:
请解释这个正则表达式的含义以及该表达式将生成哪些组?
$string =~ m/^(\d*)(?: \D.*?)(\d*)$/
PS:我正在将 Perl 代码重构为 Java。
【问题讨论】:
-
(?:...)是非捕获组。 -
123 fdhdhf234对于此输入,第一个捕获组索引包含 123,第二个捕获组索引包含 234。 -
@AvinashRaj 当我运行此代码时
perl -e '$string="123fdhdhf234"; $string =~ m/^(\d*)(?: \D.*?)(\d*)$/; print $1; print $2;'什么都没有打印出来。 -
是的,因为前三位数字后面没有空格。此正则表达式
^(\d*)(?: \D.*?)(\d*)$仅当字符串以数字开头,后跟空格或空格时才会匹配。 -
抱歉打扰了。谢谢@AvinashRaj!
标签: regex perl regex-group