有没有办法通过使用perl split函数来破坏模式的定义位置的字符串?例如,通过使用@array=split(/pattern/, $string)
,得到一个拆分$string
数组,但该数组中缺少由pattern定义的字符串部分。是否可以指定要分割的模式的哪个位置,以便$string
中包含所有初始@array
?
答案 0 :(得分:6)
在您的示例中,您似乎希望在tg
之后和gg
之前分割。
由于split
使用正则表达式,因此您可以使用环视断言。
例如
use strict;
use warnings;
my $s = 'aaaatgggccc';
my @fields = split /(?<=tg)(?=gg)/, $s;
print "$_\n" for @fields;
<强>输出强>
aaaatg
ggccc
答案 1 :(得分:0)
@Mat的答案很好,可能就是我要用的。但是,为了完整起见,还有另一种方法可能适合:
my $pattern = qr/MY_PATTERN/;
my @array = /($pattern)($string)?/g;
/g
修饰符会导致模式重复匹配。 ?
是可选的,具体取决于您希望实现的精确效果。