0

このファイルから始めます:

msgid "a string"
msgstr ""

msgid ""
"A longer string wraps "
"on multiple lines."
msgstr ""

次のようにすべての行を置き換えるGrepRegEx msgstr

msgid "a string"
msgstr "{a string}"

msgid ""
"A longer string wraps "
"on multiple lines."
msgstr ""
"{A longer string wraps "
"on multiple lines.}"

私の無限のナイベテで、私は検索します

\bmsgid "\b(*)\b"
msgstr "\b

...それを置き換える

msgid "\1"
msgstr "{\1}"

しかし、これは私をどこにも連れて行かない。Webを検索し、JavaまたはC#にさまざまなソリューションを適応させようとした後、私はあきらめて、ここで質問することにしました。

.PO変換ファイルの場合、上記のファイル構文。

このために、GrepRegEx構文をサポートするMacOS上のTextWranglerというテキストエディタを使用しています。

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

4

1 に答える 1

1

そこには2つの異なるパターンがあります。の最初のパターンは、msgid "a string"次の合計データmsgidが 1 行のパターンであることを示しているようです。``msgid ""` の 2 番目のパターンは、データが複数の行に続くことを示します。

これらは 2 つの異なるパターンであるため、1 つの正規表現でそれらすべてを一致させようとすると、結び目ができてしまいます。(RegEx に加えて、Perl などのプログラム ロジックを使用する場合を除きます...) Text Wrangler を使用したいとおっしゃったので、コメントはその中で機能するものに限定します。

Text Wrangler (TW) でこれを簡単に行うには、保存された 2 つのパターンで 2 つの検索/置換サイクルを実行する必要があると思います。(?sm)TWでは、パターンの先頭にフラグを使用して、パターンを.*行末と一致させることができます。TW は以前の Grep マッチを保存するので、機能する 2 つの検索/置換パターンを取得すると、かなり簡単になります。

そのため、お持ちのパターンと一直線のパターンを合わせることができmsgid "([^"]*)"ます。2 番目のパターンは、BB Edit または TW で一致させることができます。(?sm)msgid ""[^"]*(.*)msgstr ""

変更と名前付きキャプチャを使用して正規表現を作成して、2 つのパターンに一致させ、一度に置き換えることができる可能性がありますが、Perl で簡単に何かを作成する方がはるかに時間がかかりません...

于 2010-08-04T16:52:33.817 に答える