use*_*033 0 regex perl matching
除了执行以下操作之外,是否有更简单的方法从匹配中仅抓取一个元素:
my $date = ($xml_file =~ m/(\d+)-sys_char/)[0];
# or
my $date = $1 if $xml_file =~ /(\d+)-sys_char/;
Run Code Online (Sandbox Code Playgroud)
是否有一个标志来指定m不返回数组但只是一个$#匹配的连接值,所以我可以这样做:?
my $date = ($xml_file =~ mSOMEOPT/(\d+)-sys_char/);
Run Code Online (Sandbox Code Playgroud)
从最后删除0?
你要:
my ($date) = ($xml_file =~ m/(\d+)-sys_char/);
Run Code Online (Sandbox Code Playgroud)
这会让你$1进入$date.至于你问题的第二部分,没有办法在一个变量中得到所有编号的匹配,但是你可以把它们全部放到这样的数组中:
my @matches = ($xml_file =~ m/(\d+)-sys_char/);
Run Code Online (Sandbox Code Playgroud)
这些实际上是相同的语法:当像这样的匹配的左侧是数组时,则返回包含所有子匹配的数组.第一个版本构成($date)一个单元素数组,丢弃其余的子匹配.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |