更改文本,尖括号中的部分除外

时间:2019-02-19 18:30:38

标签: python regex

假设有以下文字,

dogs are very nice <a href="http://dogs.com">read about nice dogs here</a>

我需要更改所有不在尖括号中的内容,因此文本将为

cats are very nice <a href="http://dogs.com">read about nice cats here</a>

我发现正则表达式\([^)]*\)在这里可以派上用场,但看起来不起作用:

s = 'dogs are very nice <a href="http://dogs.com">read about nice dogs here</a>'
s = re.sub(r'\([^)]*\)', 'cats', s)
print(s)
'dogs are very nice <a href="http://dogs.com">read about nice dogs here</a>'

很抱歉,这个问题看起来很la脚,但是我对regex真的很陌生。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

此正则表达式模式似乎与您想要的没有任何关系-甚至没有提及“狗”,更不用说尖括号了。具体来说,它是匹配圆括号内的任何文本(例如(abc))。

更一般而言,我认为您不能在此处使用正则表达式。

如果HTML不包含任何其他尖括号(相当大的假设),则(<[^<>]*>[^<>]*)*dogs可能会成功,SPRING_CONFIG_ADDITIONAL-LOCATION应该与“ dogs”匹配,只有在其前面的每个“ <”最后都跟一个“>”。

但是,认真的说,只需安装“ Beautiful Soup”之类的内容并解析HTML;既简单又强大。