python.replace()正则表达式



我正在尝试抓取'</html>'标记后的所有内容并将其删除,但我的代码似乎什么都没做。.replace()不支持regex吗?

z.write(article.replace('</html>.+', '</html>'))

否。Python中的正则表达式由re模块处理。

article = re.sub(r'(?is)</html>.+', '</html>', article)

一般情况下:

str_output = re.sub(regex_search_term, regex_replacement, str_input)

为了使用正则表达式替换文本,请使用re.sub函数:

sub(pattern,repl,string[,count,flags])

它将用传递为string的文本替换pattern的非翻转实例。例如,如果需要分析匹配以提取有关特定组捕获的信息,可以将函数传递给string参数。点击此处了解更多信息。

示例

>>> import re
>>> re.sub(r'a', 'b', 'banana')
'bbnbnb'
>>> re.sub(r'/d+', '/{id}', '/andre/23/abobora/43435')
'/andre/{id}/abobora/{id}'

您可以将re模块用于正则表达式,但正则表达式可能会超出您的要求。我可能会尝试类似的东西

z.write(article[:article.index("</html>") + 7]

这要干净得多,而且应该比基于正则表达式的解决方案快得多。

对于这种特殊情况,如果使用re模块是过度使用,那么使用split(或rsplit)方法作为如何

se='</html>'
z.write(article.split(se)[0]+se)

例如,

#!/usr/bin/python
article='''<html>Larala
Ponta Monta 
</html>Kurimon
Waff Moff
'''
z=open('out.txt','w')
se='</html>'
z.write(article.split(se)[0]+se)

输出out.txt作为

<html>Larala
Ponta Monta 
</html>

最新更新