如何用正则表达式删除字符串的一部分?

时间:2018-07-03 10:48:11

标签: python regex

我正在尝试删除以下内容;

输入:

[color=00ff08]100[/color](3.0/3.0)

在给定=00ff08的情况下,color将会发生变化,因此该变量必须是可变的。

输出:

100(3.0/3.0)

基本上,我想从[color=*****]中删除[/color]string

谢谢,我对regex感到非常震惊。也许我应该买一本书。

3 个答案:

答案 0 :(得分:1)

使用re.sub

演示:

import re

s = """INPUT [color=00ff08]100[/color](3.0/3.0)"""

text = re.sub("\[color=.*?\]", "", s)
text = re.sub("\[/color\]", "", text)  

print(text)

答案 1 :(得分:0)

re.sub(r'(.*)'
       r'\[color=[^\]]*\]'
       r'([^\[]*)'
       r'\[/color\]'
       r'(.*)', r'\1\2\3', my_string)

这会将相关部分分成几组,忽略其余部分,然后将结果重新缝合在一起。

这样做不会掩盖输入中的问题。如果您想要一个更强大的解决方案(对于稍微错误的输入也可以正常工作),请查看@Rakesh的答案。他还可以用于INPUT 100[/color][/color](3.0/3.0)等输入。

答案 2 :(得分:0)

以下内容适用于所有标签:

a = "[color=00ff08]100[/color](3.0/3.0)"
re.sub("\\[[^]]*]", "", a)

输出:

'100(3.0/3.0)'