Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
python 3.4中使用正则表达式的语法无效_Python_Regex_Python 3.x_Python 3.4 - Fatal编程技术网

python 3.4中使用正则表达式的语法无效

python 3.4中使用正则表达式的语法无效,python,regex,python-3.x,python-3.4,Python,Regex,Python 3.x,Python 3.4,我在Python3.4中使用了下面的表达式,它给出了语法错误,但在Python2.7中使用了相同的代码 block = re.compile(ur'DATA\(value\)[\S ]+\s((?:(?![^\n]+DATA\(value2\)).)*)', re.IGNORECASE | re.DOTALL) 我不确定这个表达式的真正问题是什么Python 3没有ur'…'原始unicode字符串语法。改用r'.': block = re.compile( r'DATA\(value

我在Python3.4中使用了下面的表达式,它给出了语法错误,但在Python2.7中使用了相同的代码

block = re.compile(ur'DATA\(value\)[\S ]+\s((?:(?![^\n]+DATA\(value2\)).)*)', re.IGNORECASE | re.DOTALL)

我不确定这个表达式的真正问题是什么

Python 3没有
ur'…'
原始unicode字符串语法。改用
r'.'

block = re.compile(
    r'DATA\(value\)[\S ]+\s((?:(?![^\n]+DATA\(value2\)).)*)',
    re.IGNORECASE | re.DOTALL)
如果需要创建跨Python兼容的代码,则必须使用条件代码将
r'…'
生成的字节字符串解码为仅在Python 2上使用的
unicode
对象。类似这样的模块可以帮助实现这一点:

from six import u

block = re.compile(
    u(r'DATA\(value\)[\S ]+\s((?:(?![^\n]+DATA\(value2\)).)*)'),
    re.IGNORECASE | re.DOTALL)
或者您可以创建自己的兼容层;对于本地一次性测试,您可以查看是否存在
str.decode()
方法:

_block_pattern = r'DATA\(value\)[\S ]+\s((?:(?![^\n]+DATA\(value2\)).)*)'
if hasattr(_block_pattern, 'decode'):
    # Python 2, decode to unicode first
    _block_pattern = _block_pattern.decode('ascii')
block = re.compile(_block_pattern, re.IGNORECASE | re.DOTALL)