命名实体识别(regex表示位置)

2024-04-25 22:08:46 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用regex来检测以下格式的位置:

Word+, Word+, Word+

简而言之,我希望正则表达式匹配城市名称后接逗号、州名称后接逗号、国家名称后接逗号。其中城市名、州名和国家名可以包含多个用空格分隔的单词,也可以只包含一个单词。在


以下是我失败的尝试:

^{pr2}$

它可以检测到以下位置:

  • 印度安得拉邦海得拉巴

但不是像:

  • 印度卡纳塔克邦班加罗尔
  • 美国纽约市

Tags: 名称格式国家单词regexword空格逗号
1条回答
网友
1楼 · 发布于 2024-04-25 22:08:46

如果需要在单独的捕获组中获取城市、国家、州,可以使用:

r'(?i)([a-z]+(?: [a-z]+)*), ([a-z]+(?: [a-z]+)*), ([a-z]+(?: [a-z]+)*)'

否则,这个匹配子字符串格式:

^{pr2}$

如果你需要在每个单词的开头加一个大写字母(但要记住,所有的城市名称在每个单词的开头都没有大写字母,而且每个单词都可以用破折号隔开,例如:Boulogne sur Merrouperoux le CoquetJouy en Josas),您可以调整两个模式,将[a-z]+替换为[A-Z][a-z]*,并删除修饰符(?i)

更现实的模式可以是:

r'([A-Z][a-z]*(?:[ '-][A-Za-z]+)*), ([A-Z][a-z]*(?:[ '-][A-Za-z]+)*), ([A-Z][a-z]*(?:[ '-][A-Za-z]+)*)

这是可以改进的(例如,它不处理重音字母)。在

相关问题 更多 >