[ID CS4-CS6] Positive Lookbehind и список слов

Александр Панарин

Участник
Топикстартер
Сообщения
205
Реакции
116
Здравствуйте. Помогите.

Мне нужно найти все окончания для определенного списка слов и снять с них форматирование.

Пишу в Find What:
Код:
(?<=сок|морс|компот|мёд)[\l\u]+

И ничего.

При этом если написать
Код:
(?<=сок|морс)[\l\u]+
т.е. два варианта, то работает.

Что я делаю не так?
 

andrejK

R.I.P.
Сообщения
10 300
Реакции
5 218
Код:
(сок|морс|компот|мёд)\K[\l\u]+

и пользуйте всегда \K :)
 

veretragna

γνώσις
Сообщения
578
Реакции
199
Конкретно пример (?<=сок|морс)[\l\u]+ не работает. Вероятно, у вас работает (?<=сок|мёд)[\l\u]+.
Чтобы positive lookbehind сработал со списком вариантов, эти варианты должны быть одинаковой длины. Если длина разная, он не будет работать.
\K работает проще - просто находит искомое, но все, что найдено до \K, отбрасывается.
 
  • Спасибо
Реакции: xamburger

xamburger

12 лет на форуме
Сообщения
44
Реакции
47
Отличный способ. Хорошо что работает с абзацами.
Абзац1
Абзац2
Абзац3

(Абзац2\r)\K(.+) - эта конструкция находит 3-й абзац по 2-му. Вопрос - а можно ли как-то найти предыдущий абзац? Питер Карел вроде говорит, что \K в обратную сторону не работает...
 

veretragna

γνώσις
Сообщения
578
Реакции
199
Вопрос - а можно ли как-то найти предыдущий абзац? Питер Карел вроде говорит, что \K в обратную сторону не работает...
Positive lookahead должен помочь.
искомый абзац(?=\rследующий абзац)
 
  • Спасибо
Реакции: xamburger

NNN5

Модератор
15 лет на форуме
Сообщения
1 256
Реакции
1 012
(Абзац 1\r).+\r\K(.+) находит Абзац 3.
 

xamburger

12 лет на форуме
Сообщения
44
Реакции
47
Positive lookahead должен помочь.
искомый абзац(?=\rследующий абзац)

Спасибо, сработало! Раньше почему-то не хотело получаться, наверное где-то ошибку допустил. Решил, что с абзацами этот номер не проходит