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

时间:2015-08-14 17:11:08

标签: 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)

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

4 个答案:

答案 0 :(得分:5)

您可以使用re.sub

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

答案 1 :(得分:2)

你可能只需要转义方括号,因为它们是正则表达式中的特殊字符(即,start = r" \ [image:" and end = r&#34 ;: image \]&#34 ;)

答案 2 :(得分:2)

这将删除字符串中出现的所有内容

import re

s = "dasdasdsafs[image : image name : image]vvfd gvdfvg dfvgd"
s = re.sub(r'\[image :.*?: image\]', r'', s)

答案 3 :(得分:2)

显而易见的问题是,您不能只插入任意字符串,因为它将包含将改变重新查看方式的字符。相反,您想要转义开始和结束字符串。当然,你可以通过在这次输入正确的转义码来解决它们,但如果有一种简单的方法让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