3

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

Asd;lfksjd;fsdfjs;ldfkB который будет sd;lfksjd;fsdfjs;ldfk

и заменить их. Как бы я написал это выражение?

2 ответа2

2

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

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

Это регулярное выражение включает в себя A и B в совпадении, поэтому вам придется добавить их обратно с заменой.

AreplaceB Будет текст, чтобы заменить его.

2

Вы можете сопоставить любой символ между A и B следующим RegEx:

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

Это не возвращает A или B как часть совпавших символов.

  • (?<=A) означает, что A стоит перед основным выражением и что, если оно совпадает, вы не хотите, чтобы оно было включено в основной результат.

  • .* означает совпадение с любым символом, встречающимся 0 или более раз. Если вы хотите, чтобы между A и B был хотя бы один символ, вы можете использовать +.

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

Редактировать:

Notepad++ не поддерживает Lookahead / Back, поэтому вы можете заменить

(A).*(B)

с

\1\2

вместо.

Обратите внимание, что это жадный, поэтому, если есть "AxB y AzB", вы получите "AB". Чтобы получить "AB y AB", используйте

(A).*?(B)

вместо.

* Отредактировано без жадности .?* было неверно

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .