我有一个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:
与
\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范围内的代理项对来表示的,实际上您允许每个字符,所以它不是一个过滤器。(.+
是一种更简单的表达方式。)再说一次,在世界不同的地方,很难表达出一个有效的城镇名称。我很想接受任何去掉了控制字符和前导/尾随空格的非空字符串的东西。在
相关问题 更多 >
编程相关推荐