Мне нужно найти слово между символами, как показано ниже в массиве.

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";
0
idiot on perl 23 Фев 2015 в 10:31

2 ответа

Лучший ответ

Вы можете использовать функцию split, однако вы должны выйти из режима ?, поэтому он не будет обрабатываться как часть управляющего символа регулярного выражения.

 my @array = split '\\?', $string;
-1
Thilo 23 Фев 2015 в 07:37

Чтобы игнорировать пустые результаты, вы можете сопоставить ввод с регулярным выражением и сохранить сопоставленные результаты в массиве:

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
1
TLP 23 Фев 2015 в 09:04