有没有办法通过使用 perl split 函数在模式的定义位置打破字符串?例如,通过使用@array=split(/pattern/, $string)
一个获取拆分数组,$string
但该数组中缺少由模式定义的部分字符串。是否可以指定要拆分的模式的哪个位置,以便所有初始片段$string
都包含在 中@array
?
问问题
531 次
2 回答
6
从您的示例来看,您似乎想在某个点拆分,例如 aftertg
和 before gg
。
因为split
使用正则表达式,您可以使用环视断言。
在 perlre 的扩展模式下阅读它们
例如
use strict;
use warnings;
my $s = 'aaaatgggccc';
my @fields = split /(?<=tg)(?=gg)/, $s;
print "$_\n" for @fields;
输出
aaaatg
ggccc
于 2012-08-04T17:16:52.037 回答
0
@Mat 的回答很好,可能是我会使用的。但是,为了完整起见,还有另一种可能适合的方式:
my $pattern = qr/MY_PATTERN/;
my @array = /($pattern)($string)?/g;
/g
修饰符导致模式重复匹配。是可选的?
,具体取决于您希望达到的精确效果。
于 2012-08-04T13:20:38.963 回答