Regex验证来自文本java的意大利语名称



所以我想验证意大利语名称。他们可以是像安吉洛·奥雷斯特·阿德里萨诺、费鲁奇奥·雷斯塔、安东尼奥·德·法尔奇、塔玛拉·多纳、詹弗兰科·德安杰洛或克莱莉亚·德奥诺弗里奥这样的人。有人能帮帮我吗。我的方法是:[A-Z][A-Z]{1,13}[A-Z][A-Z]{1,1 3}([A-Z][-A-Z]{1,13}(?

它适用于Angelo Oreste Adrisano等名字,但我也想包括Clelia D'Onofrio和Tamara Donà等名字。

问题不是关于NER(命名实体识别(!换句话说,对我来说是可以接受的,例如"斯库拉·迪纳西亚",这不是一个真实的名字。。。

Regex是一个有点盲目的工具。它并不真正理解上下文。对于[a-zA-Z]*的正则表达式,这些都是有效的:

  • 纽约
  • 柯基
  • 投掷
  • 鸡蛋
  • 快速

这是一个非常简单的正则表达式,但请注意,它根本无法区分名称、名词、动词和形容词。

除非你在字符串中硬编码什么是有效名称(根据人类定义(,否则据我所知,所有正则表达式都只会拾取与你所写内容相匹配的任何混乱字符。在这一点上,你还不如自己列出一个有效的名字。

您的正则表达式在编写时将匹配任何两到三个单词的序列,每个单词都以a-Z的大写字母开头,然后是a-Z的十三个小写字母。仅此描述并不能排除诸如"Adfnwj Jsdako Mvdso"之类的内容,而且据我所知,regex不能简单地做到这一点。

最新更新