[英]How do I specify a range of unicode characters
如何从' '
(空格)到\×FF
指定一系列unicode字符?
我有一个像r'[\ -\×FF]'
这样的正则表达式,它不会编译说它是一个糟糕的范围。 我是Unicode正则表达式的新手,所以我之前没有遇到过这个问题。
有没有办法使这个编译或正则表达式我忘记或尚未学习?
您的unicode范围的语法将无法达到预期效果。
原始的
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
使它成为一个Unicode文字导致
\\u\u003c/code>解析,同时留下其他反斜杠
(虽然这不是一个问题),但领先的零正在弄乱它。
语法是
\\uxxxx
或\\Uxxxxxxxx
,因此它被解析为“ \×
, f
, f
”。
>>> re.compile(ur'[\ -\×ff]', re.DEBUG) in range (32, 215) literal 102 literal 102
删除前导零或切换到
\\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.