1

各サンプルが改行で区切られている、さまざまな長さのテキストのテスト サンプルを作成しています。現在、改行なしでスペースのみの 3 MB 以上のテキスト ファイルがあります。改行が単語を半分に分割していないことを確認するために、適切な reg 式の助けを期待していました。

私は正規表現の使用に非常に慣れていません。しかし、300文字の長さの行の場合、次の球場のどこかにあると想定しました。

/.{300,}\s+/&\n/g

(申し訳ありませんが、これが機能しないことはわかっています!)


注:この件に関して同様の投稿があることは知っていますが、このシナリオに具体的に対処するものは何もないと確信しています。


更新:解決しました!このコマンドで作業しました: perl -lpe's/\b(.{80,300})\b/\1\n/g' file

4

1 に答える 1

0

データに既に新しい行が含まれていませんか? (ある場合、.ドット文字はそれらと一致しません) 改行がない場合は、次のような単純なものが機能する可能性があります。

s/\s(.{80,300})\s/$1\n/g

下限 80 は単なる恣意的な選択であり、改行が存在しない場合、結果にほとんど影響しません。より短い行が必要な場合は、300 を低くすることができます。

編集:@tchristが指摘したように、単語以外の文字の周りの予期しない改行を避けるために、より良い選択に変更\bされました。\sまた、OP は Perl の後方参照が必要だとは言っていないので、tchristは Perl にとってより意味のある に変更\1されました。$1

于 2012-05-01T23:19:08.310 に答える