Regex для проверки итальянских имен из текста Java - PullRequest
0 голосов
/ 29 октября 2018

Так что я хочу проверить итальянские имена. Это могут быть что-то вроде Анджело Ореста Адрисано, Ферруччо Реста, Антонио Де Фальчи, Тамара Дона, Джанфранко Д'Анжело или Клелия Д'Онофрио. Может кто-нибудь, пожалуйста, помогите мне. Мой подход такой: [A-Z] [a-z] {1,13} [A-Z] [a-z] {1,13} ([A-Z] [a-z] {1,13})?

Он работает с такими именами, как Анджело Оресте Адрисано и так далее, но я хочу также включить такие имена, как Клелия Д'Онофрио и Тамара Дона.

Вопрос НЕ о NER (распознавание именованных сущностей)! Другими словами, для меня приемлемо, например, "Scuola Di Nasia", которое не является настоящим именем ...

1 Ответ

0 голосов
/ 29 октября 2018

Regex - немного слепой инструмент. Это действительно не понимает контекст. Для регулярного выражения [a-zA-Z] * все они действительны:

  • Нью-Йорк
  • корги
  • Метательное
  • яйцо
  • Быстро

Это невероятно простое регулярное выражение, но обратите внимание, что оно вообще не различает имена, существительные, глаголы и прилагательные.

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

Ваше регулярное выражение, как оно написано, будет соответствовать любой последовательности из двух-трех слов, каждое из которых начинается с заглавной буквы от A-Z, за которой следуют до тринадцати строчных букв от a-z. Только это описание не исключает такие вещи, как «Adfnwj Jsdako Mvdso», и, насколько мне известно, регулярное выражение не может сделать это просто.

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