如何从单词中提取模式

时间:2016-05-28 08:42:05

标签: regex perl

我是perl的新手,我遇到过一个场景,我必须从一个单词中提取D11C1

示例: 如果输入字符串为D11,则应提取D1C12

如果输入字符串为D1,则应提取{{1}}。

3 个答案:

答案 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 + - 匹配至少一位数。