Совпадение с рисунком без жадности вокруг рисунка - PullRequest
2 голосов
/ 18 июня 2019

С учетом входной строки:

a
a
bcx
ada
ac

выражение a.+?c (a и c не обязательно являются однобуквенными токенами) приводит к 2 совпадениям:

a
a
bc

и

ada
ac

когда я действительно хочу:

a
bc

и

a
ac

По сути, я хочу наименьшее количество подходящих частей. Как мне добиться этого в Notepad ++?

Ответы [ 2 ]

2 голосов
/ 18 июня 2019

Вы можете использовать это регулярное выражение с отрицательным прогнозом в режиме DOTALL (или s):

a(?:(?!a.+c).)+?c

RegEx Demo

Информация о регулярных платежах:

  • a: сопоставить букву a
  • (?:(?!a.+c).): соответствует букве, если за ней не следует выражение a.+c
  • +?: совпадение 1 или более из предыдущей группы (не жадные)
  • c: соответствует букве c

PS: Этот шаблон можно легко адаптировать, если вы на самом деле не имеете дело с одиночными буквами.

0 голосов
/ 18 июня 2019

Вы можете использовать набор символов исключения, чтобы убедиться, что после первого a нет другого a, кроме символа перед c:

a[^a]*?.c

Демо: https://regex101.com/r/u9YRqC/1

...