Regex Conditionnals - PullRequest
       6

Regex Conditionnals

0 голосов
/ 27 сентября 2019

Я бы хотел управлять сиротами в InDesign, применяя стиль символов «без перерыва» на основе выражения GREP.По сути, мне нужно указать последние 2 слова абзаца (то есть: последние 2 строки символов, разделенные пробелом).

Я нашел решение для своих публикаций на английском языке, где (\ H +? \ H?) {2} $ работает как шарм.

Проблема в моих французских публикациях, где некоторые знаки препинания должны иметь пробел перед ним.Я пытаюсь указать шаблон соответствия на основе последнего символа абзаца: Если это??!или: я сопоставляю последние 3 "слова", используя (\ H +? \ h?) {3} $ , если не совпадаю с последними 2.

Я подумал следующеевыражение сработало бы:

(?(?=[\?!:]$)((\H+?\h?){3}$)|(\H+?\h?){2}$)

но почему-то всегда по умолчанию используется выражение "else".

Может кто-нибудь сказать мне, где я ошибся?

1 Ответ

0 голосов
/ 27 сентября 2019

Возможно, вам нужен вариант (A) ниже

Проверьте, правильно ли я понимаю ...

Требования:

  1. Запишите последние два слова
  2. Даже если в конце это так?,!или:

(A) Используйте это для захвата в качестве группы : https://regexr.com/4lr6h

(\w*)(?:\s*)(\w*)(?:\s*)(\w*)(?:[\?!:]|$)

capturing group

(B) Используйте это, чтобы захватить только слова : https://regexr.com/4lr84

\w*\s\w*(?=(?:$|[\?!:]))

capturing text

(C)Используйте это, чтобы захватить последние слова дерева с метками: https://regexr.com/4lr87

\w*\s\w*[\?!:]?$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...