我是perl的新手,我遇到过一个场景,我必须从一个单词中提取D11C1
。
示例:
如果输入字符串为D11
,则应提取D1C12
如果输入字符串为D1
,则应提取{{1}}。
答案 0 :(得分:1)
使用正则表达式。
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
for my $string (qw( D11C1 D1C12 )) {
my ($extracted) = $string =~ /D[0-9]+/g;
say $extracted;
}
D
与itslef匹配,[0-9]
匹配数字,+
表示该数字可以重复一次或多次。在这种情况下,最后的/g
只是使表达式返回字符串的匹配部分。有关详细信息,请参阅perlre。
答案 1 :(得分:1)
my ($d) = $input =~ m/(D\d+)/;
测试:
perl -E 'while(my $input = shift) { my ($d) = $input =~ m/(D\d+)/; say $d }' D11C1 D1C1
D11
D1
答案 2 :(得分:0)
您可以使用以下内容:
$word =~ /.*(D\d+).*/;
my $res = $1;
\ d + - 匹配至少一位数。