2016-05-28 8 views
0

私はperlを使い慣れています。私は単語からD[number]を抽出しなければならないシナリオを見つけました。単語からパターンを抽出する方法

例: 入力文字列がD11C1であれば、入力文字列がD1C12場合、D11D1を抽出しなければならない、

抽出されるべきです。

答えて

0

次のようなものを使用可能性があります

$word =~ /.*(D\d+).*/; 
my $res = $1; 

を\ D + - 少なくとも一つの数字と一致します。

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]マッチ桁、+が数字を1回以上繰り返すことができることを意味します。最後の/gは、この場合、式を文字列の一致部分を返すようにします。詳細はperlreを参照してください。

+0

私は表現にマッチした文字列の一部を返すように/グラムを使用すると、フラグの高度な使用のビットであり、実際にどのようなないと思います/ gはのためです。抽出する文字列のビットを指定するために括弧を使用するほうが良いです。つまり、$($抽出)= $ string =〜/ ^(D \ d +)C \ d + / – mekazu

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 
関連する問題