Как распознать немецкие умлауты по границе слова? - PullRequest
1 голос
/ 09 июля 2019

Моя проблема может быть замечена в этом примере: https://regex101.com/r/dToBvm/1/

Я пытаюсь поймать все слова с помощью этого регулярного выражения \b([äöüÄÖÜß\w]+)\b

Самое смешное, что "säs" будетполучить соответствие, но не "äss" или "sää".Если слово начинается с умляута или заканчивается им, оно не будет совпадать.

Как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Поскольку граница слова совпадает между ä и s в äss и между s и ä в sää (так определяется \b).

Вывам нужно использовать отрицательные обходные пути для достижения того, что вы хотите:

(?<![äöüÄÖÜß\w])([äöüÄÖÜß\w]+)(?![äöüÄÖÜß\w])

Демо

0 голосов
/ 09 июля 2019

Я думаю, что у вас хорошее выражение лица, может быть, мы немного изменим это:

(?<=^|\s)([\p{L}\p{N}]{3})(?=[\s.,]+|$)

Выражение объяснено на верхней правой панели этой демонстрации , если вы хотите изучить ее или изменить ее, а в этой ссылке вы можете посмотреть, как она будет соответствовать если хотите, с некоторыми примерами ввода шаг за шагом.

...