2016-05-28 3 views
0

Я новичок в perl, я столкнулся с сценарием, где мне нужно извлечь из слова D[number].Как извлечь шаблон из слова

пример: Если входная строка D11C1, D11 должны быть извлечена

Если входная строка D1C12, D1 должны быть извлечены.

ответ

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] спички цифры, + означает, что цифра может быть повторена один или несколько раз. /g в конце, в этом случае, просто заставляет выражение возвращать соответствующую часть строки. См. perlre.

+0

Я думаю, что с помощью/г, чтобы вернуть часть строки, которая соответствует выражению немного продвинутого использования флага, и на самом деле не то, что/g для. Вам лучше использовать parens, чтобы указать биты строки для извлечения i.e. my ($ extract) = $ 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 
Смежные вопросы