Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 无法在Python 2.7 re中编译8位unicode正则表达式范围_Regex_Python 2.7_Unicode - Fatal编程技术网

Regex 无法在Python 2.7 re中编译8位unicode正则表达式范围

Regex 无法在Python 2.7 re中编译8位unicode正则表达式范围,regex,python-2.7,unicode,Regex,Python 2.7,Unicode,使用Python2.7,重新 我正在尝试编译unicode字符类。我可以让它使用4位数的范围u'\uxxx',但不能使用8位数的u'\uxxxxx' 以下工作: re.compile(u'[\u0010-\u0012]') re.compile(u'\U00010000') 以下情况不适用: re.compile(u'[\U00010000-\U00010001]') 结果误差为: 回溯最近一次呼叫上次: 文件,第1行,在 编译中的文件C:\Python27\lib\re.py,第190行

使用Python2.7,重新

我正在尝试编译unicode字符类。我可以让它使用4位数的范围u'\uxxx',但不能使用8位数的u'\uxxxxx'

以下工作:

re.compile(u'[\u0010-\u0012]')
re.compile(u'\U00010000')
以下情况不适用:

re.compile(u'[\U00010000-\U00010001]')
结果误差为:

回溯最近一次呼叫上次: 文件,第1行,在 编译中的文件C:\Python27\lib\re.py,第190行 return\u compilepattern,flags 文件C:\Python27\lib\re.py,第242行,在编译中 引发错误,v无效表达式 错误:错误字符范围

这似乎是一个8位数范围的问题,仅在以下情况下有效:

re.compile(u'[\u0010-\u0012]')
re.compile(u'\U00010000')
另外一个问题,我是stackoverflow的新手,我真的在为如何发布问题而挣扎。我希望Trackback出现在多行上,而不是一行上。我也希望能够粘贴从解释器复制的内容,但是这个UI把'>>>'搞得一团糟

不知道如何在评论编辑问题中添加此内容

我真正想要编译的表达式是:

re.compile(u'[\U00010000-\U0010FFFF]')
用listu“[\U00010000-\U0010FFFF]”扩展它,就扩展建议的解决方法而言,看起来相当棘手:

>>> list(u'[\U00010000-\U0010FFFF]')
[u'[', u'\ud800', u'\udc00', u'-', u'\udbff', u'\udfff', u']']

根据编译选项的不同,Python 2可能将Unicode字符串存储为UTF-16代码单元,因此\U00010000实际上是一个双代码单元字符串:

>>> list(u'[\U00010000-\U00010001]')
[u'[', u'\ud800', u'\udc00', u'-', u'\ud800', u'\udc01', u']']
因此,正则表达式解析器可以看到包含\udc00-\ud800的字符类,这是一个错误的字符范围。在此设置中,除了在确保sys.maxunicode==0xffff:


至于你的堆栈溢出问题。。。是的,复制和粘贴并不像您希望的那样友好。要粘贴来自解释器的代码,需要在其前面放置4个空格,以将其标记为代码。我写了一个python脚本来自动添加空格,这让我非常恼火。def stackify_stringinput_string:return.join[''+x for x in input_string.split'\n']@NickBailey您可以选择代码,然后单击工具栏上的{}按钮对其进行缩进。sys.maxunicode的值是多少?相关:sys.maxunicode是65535。我将其更改为4294967295L,但该表达式仍然无法编译以供您了解。。。我编辑了原稿?要包含表达式,我确实在尝试编译u'[\U00010000-\U0010FFFF]'。。。如果你的解决办法是scaleable@TedSpeers:此正则表达式与中的正则表达式相同。您可以使用u'[\uD800-\uDBFF][\uDC00-\uDFFF]',如该问题的答案所述。谢谢kennytm。。。我不可能很快就明白这一点。