Notepad ++の式の検索と置換のヘルプ


3

私は2つの文字間のすべてのコンテンツを見つけたい、と言うAB

Asd;lfksjd;fsdfjs;ldfkB どちらだろう sd;lfksjd;fsdfjs;ldfk

それらを交換します。この式はどのように書きますか?

回答:


2

次の正規表現を使用して、AとBの間の任意の文字を照合できます。

(?<=A).*(?=B)

これは、一致した文字の一部としてAまたはBを返しません。

  • (?<=A) は、Aがメイン式の前に来て、一致する場合はメイン結果に含めたくないことを意味します。

  • .*は、0回以上出現する任意の文字に一致することを意味します。少なくとも1つの文字をAとBの間にしたい場合は、代わりに。+を使用できます。

  • (?=B) は、Bがメイン式の後に来ることを意味し、一致する場合はメイン結果に含めたくないことを意味します。

編集:

Notepad ++はlookahead / behindをサポートしていないため、置き換えることができます

(A).*(B)

\1\2

代わりに。

これは貪欲なので、「AxB y AzB」がある場合は「AB」になります。「AB y AB」を取得するには、使用します

(A).*?(B)

代わりに。

*貪欲でない編集、.?*間違っていた


私はそれを試してみましたが、それは何にもマッチしません。これは想定されていませんか:[?<= A]。* [?= B]この場合、一致にAとBが含まれます。
ジェームズT

1
私の悪い点-これは有効な正規表現ですが、Notepad ++は先読みをサポートしていないようなので、Notepad ++では機能しません。私のメインエディターではないので、サポートが欠落していることを知りませんでした。
ガフ

2

私は正規表現が初めてなので、うまくいけばうまくいくと思います。

A. * Bが検索対象の正規表現になると思います。つまり、AとBを検索し、それらの間に0個以上のものを入れます。

この正規表現には、一致するAとBが含まれているため、置換でそれらを再び追加する必要があります。

AreplaceBを置き換えるテキストになります。

ここに画像の説明を入力してください


ただし、これは簡単な修正です。ジェームズが最初に答えたので、私はそれを選択しました。
meiryo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.