これは私が持っている表現です:
((.)*(,)){2}
入力は次のとおりです。
1231,3453453,ewrtewrt,wertwe,rwewer,werewrwe
期待される出力は次のとおりです。
1231,3453453,
ewrtewrt,wertwe,
rwewer,werewrwe
正規表現の代わりに、コンマ (または予想される区切り文字) で分割する必要があります。次に、アイテムをループして、2 つのアイテムごとに改行を追加します。
これは、カンマを数えて改行を 1 つおきに挿入するソリューションです。
perl -plwe's/,\K/++$i % 2 || "\n"/eg'
つまり、コンマを見つけて ( \K
) 保持し、評価された文字列を挿入します。イテレータ$i
は毎秒カンマであるため、式は改行を返します。それ以外の場合は何も返しません。正規表現は次のとおりです。
s/,\K/++$i % 2 || "\n"/eg
カウント変数が必要ですが、これはマイナス面になる可能性があります。
=$ perl -e 'my $q = q{1231,3453453,ewrtewrt,wertwe,rwewer,werewrwe}; $q =~ s/((?:[^,]*,){2})/$1\n/g; print $q'
1231,3453453,
ewrtewrt,wertwe,
rwewer,werewrwe
つまり、正規表現は次のとおりです。
s/((?:[^,]*,){2})/$1\n/g