我正在解析TrackMania的.Gbx重播文件。它与我感兴趣的字节码和XML标题部分混合在一起。我试图从重播文件中提取该部分。对于大多数重播,它工作得很好。但是我遇到了破坏正则表达式的特定重播。
import re
string = r'''
<header type="replay" exever="3.3.0" exebuild="2018-02-09_15_48"
title="TMStadium"><map uid="Y48WnfHlw9SkYptpMIVkd0PUpRm"
name="$fffTM$09FProLeague$fff xtasis -$09F GWF$fff2018
" author="w_1r" authorzone="World|Europe|Netherlands|Gelderland"/><desc
envir="Stadium" mood="Day" maptype="TrackMania\Race"
mapstyle="" displaycost="2149" mod="" /><playermodel id="StadiumCar"/><times
best="92373" respawns="1" stuntscore="7"
validable="1"/><checkpoints cur="13" onelap="13"/></header>
'''
header = r'(<header)(.*)(</header>)'
print(re.findall(header, string))
文件的其他部分似乎并不重要,因为即使使用手动复制的标题部分,正则表达式也不起作用。
任何人都可以帮忙找到我失踪的东西吗?
答案 0 :(得分:0)
感谢您chrisz建议将(?s)
mode modifier添加到我的正则表达式中。
启用&#34;单线模式&#34;这使得点匹配所有字符,包括换行符。
正确的正则表达式:
(<header)((?s).*)(</header>)