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