0

アドレスのリストをブロックから 1 行に変換するよりスマートな方法を考え出すには、正規表現について十分に知りません。

次に例を示します。

@sdfqsdf
qsdfqdsf
USA

@sdfqsdf
qsdfqdsf
USA
etc.

私は現在、脳死の正規表現を使用しています:

SEARCH ^@(.+?)\r\n(.+?)\r\n(.+?)\r\n(.+?)\r\n\r\n
REPLACE \1, \2, \3, \4\r\n

各アドレスが 4 行あることを前提としているため、あまり良くありません。

Perl (Boost) 正規表現エンジンに、ブロックが 2 つの CRLF で終わり、その間の各行が 1 つの CRLF で終わることを伝えるのがより賢明な解決策だと思いますが、それを取り除いてコンマに置き換える必要がありますが、私にはわかりませんこれを行う方法。

誰かが以前にこれを行ったことがあり、教えてもらえますか?

ありがとうございました。

4

1 に答える 1

0

すべての行を繰り返し、空の行で終わるすべての行をカンマとスペースに置き換えます。

次の正規表現は、行単位のアプローチで機能するはずです(検索して に置き換えます", "

(?<=.+)\r\n(?!\r\n)

システムの改行\r\n文字に合わせます。

テキストエディタで行う場合、VIM コマンドは

:%s/.\+\zs\r\n\ze\r\n\@!/, 

適応すること\r\nを忘れないでください。,

于 2013-01-16T14:23:28.550 に答える