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

Regex验证来自文本java的意大利语名称,java,regex,Java,Regex,所以我想验证意大利人的名字。他们可以是安杰洛·奥瑞斯特·阿德里萨诺、费鲁乔·雷斯塔、安东尼奥·德·法尔基、塔玛拉·唐娜、詹弗兰科·德安杰洛或克莱利亚·德奥诺弗里奥。谁能帮帮我吗。 我的方法是:[A-Z][A-Z]{1,13}[A-Z][A-Z]{1,13}([A-Z][A-Z]{1,13}) 它适用于安杰洛·奥瑞斯特·阿德里萨诺之类的名字,但我想包括克莱莉亚·德奥诺弗里奥和塔玛拉·唐娜等名字 问题不在于NER(命名实体识别)!换句话说,对我来说是可以接受的,例如“Scoula Di Nasia”

所以我想验证意大利人的名字。他们可以是安杰洛·奥瑞斯特·阿德里萨诺、费鲁乔·雷斯塔、安东尼奥·德·法尔基、塔玛拉·唐娜、詹弗兰科·德安杰洛或克莱利亚·德奥诺弗里奥。谁能帮帮我吗。 我的方法是:[A-Z][A-Z]{1,13}[A-Z][A-Z]{1,13}([A-Z][A-Z]{1,13})

它适用于安杰洛·奥瑞斯特·阿德里萨诺之类的名字,但我想包括克莱莉亚·德奥诺弗里奥和塔玛拉·唐娜等名字


问题不在于NER(命名实体识别)!换句话说,对我来说是可以接受的,例如“Scoula Di Nasia”,它不是一个真实的名字…

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

  • 纽约
  • 科基
  • 投掷
  • 迅速地
这是一个极其简单的正则表达式,但请注意它是如何完全不区分名称、名词、动词和形容词的

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


您的正则表达式,正如它所写的,将匹配任何由两到三个单词组成的序列,每个单词以a-Z中的大写字母开头,然后是a-Z中最多十三个小写字母。仅此描述并不排除“Adfnwj Jsdako Mvdso”之类的内容,据我所知,regex不能简单地做到这一点。

我不确定您当前的regex模式是否会出现重音字符。您是否有要检查的名称列表?您希望regex如何区分诸如
Toggle
scoola
之类的单词和可以以任意形式出现的实际名称?举一个极端的例子,假设你想对任何名字这样做,你会如何区分
joy
joy
,尤其是如果前者是句子中的第一个单词我想说的是:正则表达式并不能很好地帮助你找到与名词相反的名称。另一方面,你是如何应用正则表达式的,你期望得到什么样的结果?问题不在于正则表达式。我编辑了这个问题,抱歉,我很困惑。这个问题是关于姓名中包含的口音的吗?据我所知,没有正式定义什么是“有效的”,特别是意大利语名称。您可以使用可选字符指定一些常见的辅音-元音对,但是您将限制为“有效”名称定义的子集。如果可以的话,你可以尝试一下,但它不会涵盖“所有可能的名字,或者看起来都是意大利语起源”的整个领域。有没有办法让你的需求更清楚?