Как определить слоги в слове с помощью регулярного выражения - PullRequest
0 голосов
/ 04 апреля 2020

Учитывая, что у меня есть история. История состоит из слов. Мне нужно создать регулярное выражение, чтобы подсчитать количество слогов для каждого слова в истории.

Я пытаюсь создать регулярное выражение, где встречается следующее:

IF word ends with character 'e'
AND word also contains at least one of the vowel characters 'a'|'e'|'i'|'o'|'u'|'y'
THEN do not match 'e' at the end of word
BUT match all the other vowels in word
IF word contains only a lone 'e' at the end of a word
AND word does not contain other vowel characters
THEN match the lone 'e'

Ожидаемый результат:

Подсчет совпадений, найденных для каждого слова, должен привести к:

3 слогов для ae r o sp a ce

1 слог для sh e

A всего из 4 слогов.

Мне удалось построить (?(?=([a-zA-Z]+e))(?=([aeiouy]))), но мне нужна некоторая помощь от вас, чтобы выполнить это в одном выражении, если это возможно.

1 Ответ

0 голосов
/ 07 апреля 2020

После прочтения много о Regex и использовании условий Regex. По умолчанию условия не поддерживаются пакетом Java Regex. (Нашел ответ здесь: Условное регулярное выражение в Java? )

Итак, наконец-то построено регулярное выражение без условия if-else-then.

([aeiouyAEIOUY]+[^e.\s])|([aiouyAEIOUY]+\b)|(\b[^aeiouy0-9.']+e\b)

(https://regex101.com/r/gPO6mP/17)

Улучшения приветствуются.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...