我有這樣的正則表達式使用正向和反向查找aheads:Python:固定長度正則表達式是否必需?
import re
re.compile("<!inc\((?=.*?\)!>)|(?<=<!inc\(.*?)\)!>")
我試圖將它移植從C#到Python,但不斷收到錯誤
look-behind requires fixed-width pattern
是否有可能改寫這在Python中沒有失去意義?
的想法是爲它我使用的lookarounds解析HTTP,我已經修改了多文本匹配類似
<!inc(C:\My Documents\file.jpg)!>
更新
body = r"""------abc
Content-Disposition: form-data; name="upfile"; filename="file.txt"
Content-Type: text/plain
<!inc(C:\Temp\file.txt)!>
------abc
Content-Disposition: form-data; name="upfile2"; filename="pic.png"
Content-Type: image/png
<!inc(C:\Temp\pic.png)!>
------abc
Content-Disposition: form-data; name="note"
this is a note
------abc--
"""
multiparts = re.compile(...).split(body)
我想在分割時獲取文件路徑和其他文本,而不必刪除開始和結束標記
代碼簡潔很重要,但如果它使正則表達式可行,我可以改變<!inc(
格式。
您是否嘗試過使用原始字符串? 're.compile(r'''正則表達式''')' – C0deH4cker
「向後看」。你的意思是向後看。 –
您可以使用[regex模塊](http://pypi.python.org/pypi/regex)而不是標準re,它支持可變長度的lookbehinds。 – georg