2024-04-25 22:08:46 发布
网友
如何使用regex来检测以下格式的位置:
Word+, Word+, Word+
简而言之,我希望正则表达式匹配城市名称后接逗号、州名称后接逗号、国家名称后接逗号。其中城市名、州名和国家名可以包含多个用空格分隔的单词,也可以只包含一个单词。在
以下是我失败的尝试:
它可以检测到以下位置:
但不是像:
如果需要在单独的捕获组中获取城市、国家、州,可以使用:
r'(?i)([a-z]+(?: [a-z]+)*), ([a-z]+(?: [a-z]+)*), ([a-z]+(?: [a-z]+)*)'
否则,这个匹配子字符串格式:
如果你需要在每个单词的开头加一个大写字母(但要记住,所有的城市名称在每个单词的开头都没有大写字母,而且每个单词都可以用破折号隔开,例如:Boulogne sur Mer,rouperoux le Coquet或Jouy en Josas),您可以调整两个模式,将[a-z]+替换为[A-Z][a-z]*,并删除修饰符(?i)
[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]+)*)
这是可以改进的(例如,它不处理重音字母)。在
如果需要在单独的捕获组中获取城市、国家、州,可以使用:
否则,这个匹配子字符串格式:
^{pr2}$如果你需要在每个单词的开头加一个大写字母(但要记住,所有的城市名称在每个单词的开头都没有大写字母,而且每个单词都可以用破折号隔开,例如:Boulogne sur Mer,rouperoux le Coquet或Jouy en Josas),您可以调整两个模式,将
[a-z]+
替换为[A-Z][a-z]*
,并删除修饰符(?i)
更现实的模式可以是:
这是可以改进的(例如,它不处理重音字母)。在
相关问题 更多 >
编程相关推荐