小编典典

需要定长正则表达式吗?

python

我有这个正则表达式使用向前和向后的前瞻:

import re
re.compile("<!inc\((?=.*?\)!>)|(?<=<!inc\(.*?)\)!>")

我正在尝试将其从C#移植到Python,但始终收到错误

look-behind requires fixed-width pattern

是否有可能用Python重写而不会失去意义?

这个想法是为了匹配类似

<!inc(C:\My Documents\file.jpg)!>

更新资料

我正在使用环顾四周解析已修改的HTTP多部分文本

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(如果它使正则表达式可行,我愿意更改格式。


阅读 209

收藏
2020-12-20

共1个答案

小编典典

对于同一数组中的路径+“所有内容”,只需在开始标记和结束标记上进行分割:

import re
p = re.compile(r'''<!inc\(|\)!>''')
awesome = p.split(body)

您说您对结束标记很灵活,如果)!>可以在代码的其他地方出现,则可能需要考虑将结束标记更改为类似)!/inc>(或其他任何东西,只要它是唯一的)即可。

看到它运行。

2020-12-20