python正则表达式与unicode匹配城市名称

标签 python regex unicode

我有一个 unicode 格式的城市名称,我想将其与正则表达式匹配,但我也想验证它是否是字符串,例如“New York”。 我搜索了一下并尝试了下面附加的内容,但不知道如何实现?

我在这个网站上尝试了这个正则表达式“([\u0000-\uFFFF]+)”:http://regex101.com/#python它可以工作,但无法在 python 中工作。

提前致谢!!

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

最佳答案

mcity=re.search(r"([\u0000-\uFFFFA-Za-z\s]+)", city, re.U)

\x 不同,\u 不是正则表达式语法中的特殊序列,因此您的字符组与文字反斜杠、字母 U 等匹配。

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

mcity=re.search(u"([\u0000-\uFFFFA-Za-z\\s]+)", city, re.U)

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

这个字符组是多余的:包括 U+0000 到 U+FFFF 的范围已经涵盖了所有 A-Za-z\s,甚至包括控制字符在内的整个基本多语言平面。在 Python 的窄版本(包括 Windows Python 2 版本)中,BMP 之外的字符使用 U+D800 到 U+DFFF 范围内的代理项对表示,您实际上允许每个字符,因此这并不是一个很大的问题。筛选。 (.+ 是一种更简单的表达方式。)

话又说回来,要表达在世界不同地区什么可能构成有效的城镇名称是相当困难的。我很想接受任何除去控制字符和前导/尾随空格的非空字符串。

关于python正则表达式与unicode匹配城市名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844528/

相关文章:

python - 在Python中从文件中读取正则表达式

python - 正则表达式 anchor \< 与\b 用于字边界

javascript - 从字符串中删除空格和小数

regex - 是否有一个很好的基于浏览器的沙箱来练习正则表达式?

windows - 将非 unicode 库与 unicode 构建的应用程序一起使用的含义

python - 如何在 python 中返回 lambda 中拆分的第一项?

python - IO错误 : No space left on device - which device?

python - 将 Python 2 Unicode 移植到 Python 3

Python/WebApp Google App Engine - 测试用户/通过 header

javascript - 如何设置 unicode 字符的样式?