0

假设:

my $s1='A "sentence" ... is a concatination of nondelimiters followed by delimiters,
        followed by nondelimiters, followed by delimiters, ...';

或者

my $s2='"A "sentence" ... is a concatination of delimiters followed by nondelimiters,
        followed by delimiters, followed by nondelimiters, ..."';

我尝试使用标量 $d 中设置的分隔符通过正则表达式将其拆分为列表 @a:

my $d = ' ,."'; # delimiter set
my @a = $s1 =~ /([^$d]+)([$d]+)/g; # gives |A| "|sentence|" ... |is| |a| |...

在第二种情况下,句子可以使用

my @a = $s2 =~ /([$d]+)([^$d]+)/g; # gives |"|A| "|sentence|" ... |is| |a|...

一个正则表达式如何处理这两种情况?需要帮助 - 请。

4

1 回答 1

1

您需要一个连续的分隔符或非分隔符块。只需使用

$s =~ /([$d]+|[^$d]+)/g;
于 2013-03-06T23:05:50.580 回答