Я новичок в perl, я столкнулся с сценарием, где мне нужно извлечь из слова D[number]
.Как извлечь шаблон из слова
пример: Если входная строка D11C1
, D11
должны быть извлечена
Если входная строка D1C12
, D1
должны быть извлечены.
Я новичок в perl, я столкнулся с сценарием, где мне нужно извлечь из слова D[number]
.Как извлечь шаблон из слова
пример: Если входная строка D11C1
, D11
должны быть извлечена
Если входная строка D1C12
, D1
должны быть извлечены.
Вы можете использовать что-то вроде:
$word =~ /.*(D\d+).*/;
my $res = $1;
\ d + - соответствует, по крайней мере одну цифру.
Используйте регулярное выражение.
#!/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.
my ($d) = $input =~ m/(D\d+)/;
Тест:
perl -E 'while(my $input = shift) { my ($d) = $input =~ m/(D\d+)/; say $d }' D11C1 D1C1
D11
D1
Я думаю, что с помощью/г, чтобы вернуть часть строки, которая соответствует выражению немного продвинутого использования флага, и на самом деле не то, что/g для. Вам лучше использовать parens, чтобы указать биты строки для извлечения i.e. my ($ extract) = $ string = ~/^ (D \ d +) C \ d + / – mekazu