GREP последние {4} конечные буквы слова

В InDesign я надеялся [\l]{4}(?=\s) найдет последние четыре буквы слов, но GREP не сработал. Я хотел поместить это в заголовок страницы как суффикс. Делал магию с \b а также $ничего не получалось. И http://regex101.com/r/uQ7xR3/1 не работает в InDesign, потому что это php флейвор.

Потому что есть несколько дополнительных условий. Если 5-я буква h, тогда вместо 4 мы должны взять 5 последних букв каждого слова. Но мы не берем ничего разделенного \sи мы не берем ... или что-нибудь внутри | (лайк | ā |).

virūpacakṣus dharmacakṣus nayacakṣus sūryacakṣus divyacakṣus saṃgrah āsaṃgrah upasaṃgrah pratisaṃgrah abhisaṃgrah anusaṃgrah

Обновить. Позвольте мне добавить больше ограничений. Не просто "ч", но если есть эти комбинации kh|gh|ch|jh|ṭh|ḍh|th|dh|ph|bh, не берите только последние 4, но последние 5 букв. То же самое с ai | au - они не должны быть разделены.

Общий случай: 1) От vṛddhāpacāyitva принимать itva, Два исключения: 2) Из nakhāli принимать khāli вместо просто hāli, так как kh трактуется как одна буква в сценарии деванагари. Идентично с kh|gh|ch|jh|ṭh|ḍh|th|dh|ph|bh, От mirikha принимать rikha вместо просто ikha, так как kh трактуется как одна буква в сценарии деванагари. Идентично с kh|gh|ch|jh|ṭh|ḍh|th|dh|ph|bh, 3) От mahahrauḍ принимать hrauḍ вместо просто rauḍ, так как au в сценарии деванагари трактуется как одна буква, так что ай | ау - как одна буква. От ekaikaivat принимать aivat вместо просто ivat, так как ai в сценарии деванагари трактуется как одна буква, так что ай | ау - как одна буква.

2 ответа

Будьте осторожны, когда заявляете, что "это не работает", и объяснения этого. Ваш начальный GREP [\l]{4}(?=\s) работает в InDesign (хотя [..] лишние).

Похоже, связанный \w\w\w\w$ также работает, и это не имеет ничего общего с "php flavour". Причина, по которой выделяется только последнее вхождение, заключается в том, что (1) $ ссылки только на конец истории и добавление m многострочный флаг заставляет его работать для отдельных линий, (2) с m будет выделен только первый экземпляр (по умолчанию), и вам нужно g чтобы получить их все, но самое главное, (3) \w в общем синтаксический анализатор GREP может не поддерживать Unicode, и в этом случае вы можете видеть, что это не потому, что \w не поднимает а также , GREP InDesign, с другой стороны, поддерживает Unicode.

Следующее выражение будет работать на конкретных примерах, которые вы предоставили; другие комбинации "одной буквы" могут быть добавлены аналогичным образом.

(au|ai|kh|\l){4}h?\b

Применительно к вашим образцам слов:

с осложнениями

Возможно, попробуйте:

[[:alpha:]]{4}h?\b

Для получения дополнительной квалификации вы можете попробовать:

 (?:ai|au|kh|gh|ch|jh|ṭh|ḍh|th|dh|ph|bh|[[:alpha:]]){4}h?\b

Опять же, как и раньше, вам нужно будет заменить класс posix для букв на любой токен, эквивалентный в InDesign

Другие вопросы по тегам