Мне нужно найти слово между символами, как показано ниже в массиве.
my $string = "?hi how r u?what is your name?what is your age?";
Он должен быть преобразован в массив, где массив должен быть таким:
my $array[0]="hi how r u";
my $array[1]="what is your name";
my $array[2]="what is your age";
2 ответа
Вы можете использовать функцию split
, однако вы должны выйти из режима ?
, поэтому он не будет обрабатываться как часть управляющего символа регулярного выражения.
my @array = split '\\?', $string;
Чтобы игнорировать пустые результаты, вы можете сопоставить ввод с регулярным выражением и сохранить сопоставленные результаты в массиве:
use strict;
use warnings;
my $string = "?hi how r u?what is your name?what is your age?";
my @matches = ( $string =~ /(?<=\?)[^?]+/g );
foreach my $i (@matches) {
print $i . "\n";
}
Выход:
hi how r u
what is your name
what is your age
Похожие вопросы
Новые вопросы
regex
Регулярные выражения предоставляют декларативный язык для сопоставления шаблонов в строках. Они обычно используются для проверки строк, разбора и преобразования. Укажите язык (PHP, Python и т. д.) или инструмент (grep, VS Code, Google Analytics и т. д.), который вы используете. Не размещайте вопросы, требующие объяснения того, что означает символ или чему будет соответствовать конкретное регулярное выражение.