python regex与unicode匹配城市名称

2024-10-16 17:27:08 发布

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

我有一个unicode格式的城市名称,我想将它与regex匹配,但我还想验证它是字符串时的状态,比如“New York”。 我找了一点,试了一下下面的附件,但不知道怎么做的?在

我在这个网站上尝试了这个regex“([\u0000-\uFFFF]+)”,它可以工作,但无法在python中运行。在

提前谢谢!!在

city=u"H\u0101na"
mcity=re.search(r"([\u0000-\uFFFFA-Za-z\s]+)", city, re.U)
mcity.group(0)
u'H'

Tags: 字符串re名称citynew附件网站状态
1条回答
网友
1楼 · 发布于 2024-10-16 17:27:08
mcity=re.search(r"([\u0000-\uFFFFA-Za-z\s]+)", city, re.U)

\x不同,\u不是regex语法中的特殊序列,因此您的字符组与字面反斜杠、字母U等匹配。在

要在正则表达式中引用非ASCII,必须将它们作为原始字符包含在Unicode字符串中,例如:

^{pr2}$

(如果您不想让\s双反斜杠,也可以使用ur字符串,其中\u仍然可以作为转义,但其他转义符如\x不起作用。不过,这有点令人困惑。)

这个字符组是多余的:包括U+0000到U+FFFF的范围已经覆盖了A-Za-z\s的所有内容,甚至包括控制字符的整个基本多语言平面。在一个狭窄的Python构建(包括windowspython2构建)中,BMP之外的字符是使用U+D800到U+DFFF范围内的代理项对来表示的,实际上您允许每个字符,所以它不是一个过滤器。(.+是一种更简单的表达方式。)

再说一次,在世界不同的地方,很难表达出一个有效的城镇名称。我很想接受任何去掉了控制字符和前导/尾随空格的非空字符串的东西。在

相关问题 更多 >