1

有没有办法通过使用 perl split 函数在模式的定义位置打破字符串?例如,通过使用@array=split(/pattern/, $string)一个获取拆分数组,$string但该数组中缺少由模式定义的部分字符串。是否可以指定要拆分的模式的哪个位置,以便所有初始片段$string都包含在 中@array

4

2 回答 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 回答