Блокнот ++ знайде та замінить вираз довідки


3

Я хочу знайти весь вміст між двома символами, скажімо, Aі B:

Asd;lfksjd;fsdfjs;ldfkB що було б sd;lfksjd;fsdfjs;ldfk

і замінити їх. Як би я написав цей вираз?

Відповіді:


2

Ви можете зіставити будь-який символ між A і B за допомогою наступного RegEx:

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

Це не повертає A або B як частину відповідних символів.

  • (?<=A) означає, що A стоїть перед основним виразом, і якщо він відповідає, ви не хочете, щоб він був включений у головний результат.

  • .*означає, що відповідає будь-якому символу, що виникає 0 або більше разів. Якщо ви хочете, щоб принаймні один символ знаходився між A і B, ви можете використовувати +.

  • (?=B) означає, що B надходить після основного виразу, і якщо він відповідає, ви не хочете, щоб він був включений у головний результат.

Редагувати:

Блокнот ++ не підтримує пошук / позаду, тому його можна замінити

(A).*(B)

з

\1\2

замість цього.

Зауважте, що це жадібно, тому якщо у вас є "AxB y AzB", ви отримаєте "AB". Щоб отримати "AB y AB", використовуйте

(A).*?(B)

замість цього.

* Відредаговано не жадібно, .?*було неправильно


Я спробував це, і це нічого не відповідає. Ви впевнені, що це не повинно бути таким: [? <= A]. * [? = B], у такому випадку це буде включати A і B у відповідність.
Джеймс Т

1
Моє погано - це дійсний регулярний вираз, але, схоже, Notepad ++ не підтримує лукахеди, тому це не працюватиме в Notepad ++. Це не мій головний редактор, тому я не знав про відсутність підтримки.
Гафф

2

Я дуже новачок у регулярних виразах, тому, сподіваємось, це працює для вас.

Я думаю, що A. * B був би регулярним виразом для пошуку. Тобто пошук A і B з нулем або більше речей між ними.

Цей регулярний вираз включає A і B у матчі, тому вам доведеться додавати їх із заміною.

AreplaceB - це текст, на який його слід замінити.

введіть тут опис зображення


Це все-таки просте виправлення. Я думаю, що ваше рішення може бути кращим, Джеймс відповів спочатку, тому я обрав його.
meiryo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.