繁体   English   中英

如何指定一系列unicode字符

[英]How do I specify a range of unicode characters

如何从' ' (空格)到\×FF指定一系列unicode字符?

我有一个像r'[\ -\×FF]'这样的正则表达式,它不会编译说它是一个糟糕的范围。 我是Unicode正则表达式的新手,所以我之前没有遇到过这个问题。

有没有办法使这个编译或正则表达式我忘记或尚未学习?

您的unicode范围的语法将无法达到预期效果。

  1. 原始的r''字符串可以防止\\u\u003c/code>逃脱被解析,并且正则表达式引擎不会这样做。 此集合中唯一的范围是[0-\\]

     >>> re.compile(r'[\ -\×ff]', re.DEBUG) in literal 117 literal 48 literal 48 literal 50 range (48, 117) literal 48 literal 48 literal 100 literal 55 literal 102 literal 102 
  2. 使它成为一个Unicode文字导致\\u\u003c/code>解析,同时留下其他反斜杠 (虽然这不是一个问题),但领先的零正在弄乱它。 语法是\\uxxxx\\Uxxxxxxxx ,因此它被解析为“ ff ”。

     >>> re.compile(ur'[\ -\×ff]', re.DEBUG) in range (32, 215) literal 102 literal 102 
  3. 删除前导零或切换到\\U0000d7ff将修复它:

     >>> re.compile(ur'[\ -\퟿]', re.DEBUG) in range (32, 55295) 

如果您使用的是Python 2.x,则应确保指定了一个unicode字符串(使用u''或内置的“unicode”):

>>> r = re.compile(u'[\u0020-\uD7FF]')
>>> r.search(u'foo \uD7F0 bar')
<_sre.SRE_Match object at 0xb7084950>
r.search(u' ')
<_sre.SRE_Match object at 0xb7084b48>

使用原始字符串(就像你一样,用r'')给你(“ascii”字符串)由“仰泳”+字母“u”加上数字0加上...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM