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