spi*_*pig 22 python regex unicode
如何从' '(空格)到\u00D7FF?指定一系列unicode字符?
我有一个正则表达式r'[\u0020-\u00D7FF]',它不会编译说它是一个糟糕的范围.我是Unicode正则表达式的新手,所以我之前没有遇到过这个问题.
有没有办法使这个编译或正则表达式我忘记或尚未学习?
Jos*_*Lee 27
您的unicode范围的语法将无法达到预期效果.
原始r''字符串可防止\u解析转义,并且正则表达式引擎不会执行此操作.该套装中唯一的范围是[0-\]:
>>> re.compile(r'[\u0020-\u00d7ff]', 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
Run Code Online (Sandbox Code Playgroud)使它成为一个Unicode文字会导致\u解析,同时只留下其他反斜杠(虽然这不是一个问题),但是领先的零正在弄乱它.语法是\uxxxx或\Uxxxxxxxx,所以它解析为" ,".\u00d7ff
>>> re.compile(ur'[\u0020-\u00d7ff]', re.DEBUG)
in
range (32, 215)
literal 102
literal 102
Run Code Online (Sandbox Code Playgroud)删除前导零或切换到\U0000d7ff将修复它:
>>> re.compile(ur'[\u0020-\ud7ff]', re.DEBUG)
in
range (32, 55295)
Run Code Online (Sandbox Code Playgroud)如果您使用的是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>
Run Code Online (Sandbox Code Playgroud)
使用原始字符串(就像你一样,用r'')给你("ascii"字符串)由"仰泳"+字母"u"加上数字0加上...
| 归档时间: |
|
| 查看次数: |
10876 次 |
| 最近记录: |