-1

これは私が持っている表現です:

((.)*(,)){2}

入力は次のとおりです。

1231,3453453,ewrtewrt,wertwe,rwewer,werewrwe

期待される出力は次のとおりです。

1231,3453453,
ewrtewrt,wertwe,
rwewer,werewrwe
4

4 に答える 4

5

正規表現の代わりに、コンマ (または予想される区切り文字) で分割する必要があります。次に、アイテムをループして、2 つのアイテムごとに改行を追加します。

于 2013-02-08T17:07:03.640 に答える
2

これは、カンマを数えて改行を 1 つおきに挿入するソリューションです。

perl -plwe's/,\K/++$i % 2 || "\n"/eg'

つまり、コンマを見つけて ( \K) 保持し、評価された文字列を挿入します。イテレータ$iは毎秒カンマであるため、式は改行を返します。それ以外の場合は何も返しません。正規表現は次のとおりです。

s/,\K/++$i % 2 || "\n"/eg

カウント変数が必要ですが、これはマイナス面になる可能性があります。

于 2013-02-08T17:41:53.967 に答える
2
=$ 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
于 2013-02-08T17:10:17.157 に答える