Date = re.search('%s(.*)%s' % ("DateCreated:", "] [TotalTime:"), find_all(Text("Exam"))[0].value).group(1)
我收到错误“正则表达式的意外结束”。我的猜测是它不接受“] [”代码中的部分。
答案 0 :(得分:2)
使用()
转义字符串,使其可以用作正则表达式中的文字。
观察:
re.escape()
>>> re.search(re.escape('] ['), 'foo ] [ bar')
<_sre.SRE_Match object at 0x105a956b0>
当然,在您的情况下,您只想逃避您之间搜索的两个文字字符串:
>>> re.search('] [', 'foo ] [ bar')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 146, in search
return _compile(pattern, flags).search(string)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 251, in _compile
raise error, v # invalid expression
sre_constants.error: unexpected end of regular expression
...顺便说一句,请注意适当的缩进更容易实现可读性?您可能会考虑将来自己这样做,或者使用可以为您完成此操作的编辑器(例如emacs)。
答案 1 :(得分:0)
在正则表达式模式中使用时,应转义特殊字符:
1)以直接的方式:
Date = re.search(r'%s(.*)%s' % ("DateCreated:", "\] \[TotalTime:"), 'DateCreated: 04-01-2017 ] [TotalTime: 2')
print(Date.group(1)) # 04-01-2017
2)或使用re.escape()
函数(最好):
Date = re.search(r'%s(.*)%s' % (re.escape("DateCreated:"), re.escape("] [TotalTime:")), 'DateCreated: 04-01-2017 ] [TotalTime: 2')
print(Date.group(1)) # 04-01-2017