如何在Perl中的两个符号之间grep单词



我需要在如下所示的数组中的符号之间grep单词。

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";

要忽略空结果,可以使用regex匹配输入,并将匹配的结果存储在数组中:

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

您可以使用split函数,但必须转义?字符,这样它就不会作为正则表达式控制字符的一部分受到特殊处理。

 my @array = split '\?', $string;

最新更新