0

私は正規表現があまり得意ではありませんが、Textmateでは、次のようなXMLファイルの複数行をクリアしようとしています。

<comments>
    <sub_node>....
....
</comments>

これを正規表現の検索/置換で使用しています。

<comments>(?m:.*)</comments>

上記は複数回発生しますが、検索を行うと、最初のノードが検索され、ファイル内の最後まで外部ノードを含むその間のすべてが選択されます。

最後の行から前(後方)を検索すると、ブロックが正しくキャプチャされます。ここで何が間違っているのかわかりません。誰かがこれを行うためのはるかに効率的な方法を提案するかもしれません。

ありがとう。

4

2 に答える 2

2

非貪欲な修飾子を使用する必要があります。Textmate については何も知らないので、サポートされているかどうかはわかりません。そうでない場合は、 の後に が続かないものをいくつでも検索でき<comments>ます。(これはより具体的なヘルプになりますが、投稿された例はなじみがなく、Textmate の奇妙さに違いありません。)</comments><comments>

于 2011-04-25T02:12:36.730 に答える
0

私には完全に正常な動作のように聞こえます。?次のように、を追加することを意味します。

<comments>(?m:.*?)</comments>

ここでの唯一の奇妙な点は、メタ文字が改行に一致mできるようにする (「複数行」の) 修飾子です。.ほとんどの正規表現フレーバーは、その「単一行」または「ドット一致すべて」モードを呼び出し、sそれを指定するために使用します。mこれらのフレーバーは/"multiline" モードもサポートする傾向があり、これにより^および$ アンカーの動作が変更されます。TextMate では、これがデフォルトのモードであり、変更できません。

于 2011-04-25T04:43:07.977 に答える