这可能是一个简单的:) 我试着转换以下内容:
<gallery>File:ReDescribe.jpg|Photo by:J. K.File:redescribe_still1.pngFile:redescribe_still2.jpegFile:redescribe_still3.jpgFile:redescribe_still4.jpgFile:redescribe_still5.jpg</gallery>
成:
[[File:ReDescribe.jpg|photo by: J K]][[File:redescribe_still1.png]] [[File:redescribe_still2.jpeg]] [[File:redescribe_still3.jpg]] [[File:redescribe_still4.jpg]] [[File:redescribe_still5.jpg]]
首先,我正在寻找一个只能选择每个文件的Python正则表达式:filename.ext
到目前为止我虽然'File:(.*?)File'
但是这个表达式排除了最后一个文件:因为它没有跟随任何字符。
请参阅regex_tester https://regex101.com/r/iV1mD9/1
表达式如何也匹配最后一个文件:后跟</gallery>
?
答案 0 :(得分:1)
File:(.*?)(?=File:|<\/gallery>)
试试这个。请参阅演示。使用lookahead
确保同时捕获最后File:
。
答案 1 :(得分:1)
首先删除gallery
代码,然后应用以下正向前瞻性正则表达式。
>>> s = '''<gallery>File:ReDescribe.jpg|Photo by:J. K.File:redescribe_still1.pngFile:redescribe_still2.jpegFile:redescribe_still3.jpgFile:redescribe_still4.jpgFile:redescribe_still5.jpg</gallery>'''
>>> re.sub(r'(File:.+?)(?=File:|$)', r'[[\1]]', re.sub(r'</?gallery>', '', s))
'[[File:ReDescribe.jpg|Photo by:J. K.]][[File:redescribe_still1.png]][[File:redescribe_still2.jpeg]][[File:redescribe_still3.jpg]][[File:redescribe_still4.jpg]][[File:redescribe_still5.jpg]]'