是否需要固定长度的正则表达式?

问题描述 投票:0回答:3

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

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

c# python regex lookbehind
3个回答
3
投票

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


3
投票

从文档中:


1
投票
import re

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

f = pat.match(r"<!inc(C:\My Documents\file.jpg)!>").group(1)
© www.soinside.com 2019 - 2024. All rights reserved.