Поиск слов в тексте в соответствии с падежами
Существует список фамилий, в именительном падеже, единственном числе, строго с большой буквы. Представим в данном списке есть фамилия Пушкин Также, например, дан текст:
Александр Сергеевич Пушкин — один из величайших русских поэтов и основоположник современного русского литературного языка. Пушкину удалось создать произведения, которые продолжают вдохновлять миллионы читателей. Его творчество, наполненное чувством и глубокими размышлениями, оказало влияние на развитие русской литературы. В произведениях Пушкина, таких как "Евгений Онегин", можно увидеть его мастерство и уникальный стиль. Судьба пушкина была трагической: он погиб в дуэли, оставив после себя богатое наследие. Множество людей по всему миру вдохновляется поэзией Пушкина и его прозой. Мы должны помнить о значимости Александра Сергеевича Пушкина в истории русской культуры и литературы.
Как можно найти в этом тексте упоминания Пушкина в различных падежах, и при этом регистр первой буквы может быть другой (то есть начинаться с маленькой буквы), при отображении найденных слов, при этом, нужно сохранить, либо привести к такому виду, где первая буква в верхнем регистре
Ответы (1 шт):
Например, можно определить окончания в разных падежах: родительный/винительный -а, дательный -у, творительный -ым, предложный -е (вероятно, только в единственном числе и/или мужском роде) и искать нужную фамилию с учётом этих падежей при помощи регулярного выражения:
var text = """
Александр Сергеевич Пушкин — один из величайших русских поэтов и основоположник современного русского литературного языка.
Пушкину удалось создать произведения, которые продолжают вдохновлять миллионы читателей.
Его творчество, наполненное чувством и глубокими размышлениями, оказало влияние на развитие русской литературы.
В произведениях Пушкина, таких как "Евгений Онегин", можно увидеть его мастерство и уникальный стиль.
Судьба пушкина была трагической: он погиб после дуэли, оставив после себя богатое наследие.
Множество людей по всему миру вдохновляется поэзией Пушкина и его прозой.
Мы должны помнить о значимости Александра Сергеевича Пушкина в истории русской культуры и литературы.
""";
var name = "(Пушкин)(а|у|ым|е)?"; // первая группа - основа, вторая - окончания
var count = Pattern.compile(name, Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE)
.matcher(text)
.results()
.peek(mr -> System.out.println(mr.group())) // отладочный вывод
.map(mr -> mr.group(1)) // оставить только основу слова
.count();
System.out.println(count);
Будет найдено шесть совпадений.
Однако следует учесть, что в общем случае могут возникнуть различные коллизии, например:
- с названием города Пушкин
- с кратким прилагательным "пушкин" при написании со строчной буквы,
- с фамилией в женском роде "Пушкина" и её словоформами,
- со словоформами от названия города Пушкино, для разрешения которых придётся учитывать и анализировать более широкий контекст.