4 回答
TA贡献1839条经验 获得超15个赞
如果您想要某些部分而不是其他部分,则需要使用组。
import re
s = ' cvbcx cvbcx <span class=""latex""> ... This can be different ... </span>vcvbcxbvxc'
r = re.search( r'(<span class=""latex"">)(.+)(</span>)', s)
print(s)
# cvbcx cvbcx <span class=""latex""> ... This can be different ... </span>vcvbcxbvxc
# print(r)
# <re.Match object; span=(13, 73), match='<span class=""latex""> ... This can be different >
print(r.group(1), r.group(3))
# <span class=""latex""> </span>
TA贡献1887条经验 获得超5个赞
这可以工作:
>>> import re
>>> x=re.sub(r"""<span class=""latex"">.+?</span>""", "", s)
>>> x
' bla blub bleb'
正则表达式101
编辑:在 OP 澄清后,将答案更改为使用惰性量词而不是捕获组。虽然这可行,但它不能扩展到更复杂的情况。如果是这种情况,正确的解决方案是解析字符串并提取所需的内容。
TA贡献1803条经验 获得超3个赞
阅读re.sub 函数。
一个简单的例子:
import re
s = ' cvbcx cvbcx <span class=""latex""> ... This can be different ... </span>vcvbcxbvxc'
re.sub(r'<span class=""latex"">.+</span>', '<span class=""latex""></span>', s)
>> ' cvbcx cvbcx <span class=""latex""></span>vcvbcxbvxc'
TA贡献1828条经验 获得超4个赞
如果要将数据保留在两者之间:
>>> x
'<span class=""latex""> ... This can be different ... </span>'
>>>
>>> d = re.sub('<(/)?span(\ class=\"\".*\"\")?(>)', '', x)
>>>
>>> d
' ... This can be different ... '
>>>
如果要保留标签:
>>> x
'<span class=""latex""> ... This can be different ... </span>'
>>>
>>>
>>>
>>> new_data = 'abc 123 456'
>>>
>>>
>>> d = re.sub('\">.*</','\">{}</'.format(new_data),x)
>>>
>>>
>>> d
'<span class=""latex"">abc 123 456</span>'
>>>
>>>
>>>
添加回答
举报