1

perl split 関数を使用して、パターンの定義された位置で文字列を分割する方法はありますか? たとえば、@array=split(/pattern/, $string)1 つを使用すると分割の配列が取得$stringされますが、パターンで定義された文字列の一部がその配列にありません。$stringイニシャルのすべての部分が に含まれるように、パターンのどの位置で分割するかを指定することは可能@arrayですか?

4

2 に答える 2

6

tgあなたの例から、たとえば、 afterと beforeで分割したいようですgg

split正規表現を使用するため、ルックアラウンド アサーションを使用できます。

perlreの Extended Patterns でそれらについて読んでください。

例えば

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 に答える