在python中查找并删除以特定子字符串开头和结尾的字符串

n.i*_*imp 2 python regex python-2.7 python-3.x

我有一个类似的字符串"dasdasdsafs[image : image name : image]vvfd gvdfvg dfvgd".从这个字符串,我想删除星星的[image :结尾部分 : image].我试图使用以下代码找到'子字符串' -

result = re.search('%s(.*)%s' % (start, end), st).group(1)
Run Code Online (Sandbox Code Playgroud)

但它没有给我所需的结果.帮我找到从字符串中删除子字符串的正确方法.

Kas*_*mvd 5

你可以使用re.sub:

>>> s='dasdasdsafs[image : image name : image]vvfd gvdfvg dfvgd'
>>> re.sub(r'\[image.+image\]','',s)
'dasdasdsafsvvfd gvdfvg dfvgd'
Run Code Online (Sandbox Code Playgroud)


Ken*_*rom 5

明显的问题是您不能只插入任意字符串,因为它将包含会改变重新查看它的方式的字符。相反,您想要转义开始和结束字符串。当然,这次您可以通过输入正确的转义代码来手动修复它们,但如果有一种简单的方法让 python 库为您完成此操作并处理任何值,那就更好了。

import re
start = re.escape("[image : ")
end   = re.escape(" : image]")
st = "dasdasdsafs[image : image name : image]vvfd gvdfvg dfvgd"
result = re.search('%s(.*)%s' % (start, end), st).group(1)
print result
Run Code Online (Sandbox Code Playgroud)