运行正则表达式时出现虚假逃逸错误

时间:2014-08-20 15:14:17

标签: python regex

昨天,我得到了正则表达式匹配的帮助,这个匹配作为一个独立的。但是当放入这段代码时,我得到了"伪造逃脱错误"。代码和回溯如下。你能指点我做错了吗?

#!/usr/bin/env python
import re

sf = open("a.txt","r")
out = open("b.txt","w")
regex = re.compile(r'Merging\s+\d+[^=]*=\s*\'\w+@\w+\x\w+\'\\"')


for line in sf:
    m = regex.findall(line)
    for i in m:
       print >> out,line,

追溯是:

  

追踪(最近一次通话):     File "match.py", line 6, in <module> regex = re.compile(r'Merging\s+\d+[^=]*=\s*\'\w+@\w+\x\w+\'\\"') File "/usr/lib/python2.7/re.py", line 190, in compile return _compile(pattern, flags) File "/usr/lib/python2.7/re.py", line 242, in _compile raise error, v # invalid expression sre_constants.error: bogus escape: '\\x'

2 个答案:

答案 0 :(得分:4)

\x不是有效的特殊序列。如果您要匹配文字\x,则需要使用\\x转义反斜杠,或者如果您需要其他内容,请使用valid one,例如\w

这将编译:

re.compile(r'Merging\s+\d+[^=]*=\s*\'\w+@\w+\\x\w+\'\\"')

答案 1 :(得分:1)

\x后面必须跟一个十六进制值(即正好两个十六进制数字):

>>> '\x61'
'a'
>>> '\x'
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape

如果您想匹配文字 \x,则可以转义反斜杠,以便x不会被转义:\\x