web-dev-qa-db-ja.com

Notepad ++は式のヘルプを見つけて置換します

ABのように、2文字の間のすべてのコンテンツを検索したい:

Asd;lfksjd;fsdfjs;ldfkBこれはsd;lfksjd;fsdfjs;ldfk

そしてそれらを交換してください。この式をどのように書くのでしょうか?

3
meiryo

次の正規表現を使用して、AとBの間の任意の文字を一致させることができます。

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

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

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

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

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

編集:

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

(A).*(B)

\1\2

代わりに。

これは貪欲なので、「AxB y AzB」があると、「AB」になります。 「AByAB」を取得するには、

(A).*?(B)

代わりに。

*欲張りでない編集、.?*が間違っていた

2
Gaff

私は正規表現にとても慣れていないので、うまくいけばこれがあなたのために働くでしょう。

A。* Bが検索する正規表現になると思います。つまり、AとBの間に0個以上のものがある状態で検索します。

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

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

enter image description here

2
James T