在Python中查找和替换文本模式
我有一堆HTML文本,我想找到带有标签在Python中查找和替换文本模式,python,Python,我有一堆HTML文本,我想找到带有标签img的所有文本模式,并更改它们的模板。如果初始文本为: <img alt=src="http://www.example.com/image.png" /> 我该如何处理这个问题?您的示例看起来很简单,您可以这样做: In [140]: my_str = '<img alt=src="http://www.example.com/image.png" />' In [141]: re.sub(r'\<img.*src\=\"
img
的所有文本模式,并更改它们的模板。如果初始文本为:
<img alt=src="http://www.example.com/image.png" />
我该如何处理这个问题?您的示例看起来很简单,您可以这样做:
In [140]: my_str = '<img alt=src="http://www.example.com/image.png" />'
In [141]: re.sub(r'\<img.*src\=\"(http\://.*\.png)\".*\/\>', '[insert picture: []("\\1")]', my_str)
Out[141]: '[insert picture: []("http://www.example.com/image.png")]'
[140]中的:my_str=''
在[141]:re.sub(r'\',“[插入图片:[](“\\1”)]”中,my\u str)
Out[141]:“[插入图片:[](”http://www.example.com/image.png")]'
不要试图重新发明轮子
使用模块
从urlextract导入urlextract
text=“”
提取器=URLExtract()
URL=提取器。查找URL(文本)
打印(URL)#打印:['www.example.com/image.png']
tag(正在标记)?你是说is(img)吗?跟我重复一遍:不要用语法解析HTMLregex@AdamSmith好吧,这就是为什么我要问一个问题!请告知。@Lexasaurus无意冒犯。试图用正则表达式解析HTML有点像是在开玩笑。尝试使用HTML解析器,如lxml
或BeautifulSoup(bs4
)长话短说:正则表达式仅适用于分类为“正则”的语言(请参见“关于正则语言”),也就是由Type-3语法生成的语言。HTML不是一种常规语言,因此使用正则表达式解析它有时会导致…*有趣的*结果。谢谢你的回答,但找到URL只是问题的第一部分。对于问题的第二部分,简单地迭代整个HTML代码并查找找到的每个URL的索引并不是最好的解决方案。我们可能会有一个URL在文本中重复多次。需要找到并替换所有img标签的解决方案。
In [140]: my_str = '<img alt=src="http://www.example.com/image.png" />'
In [141]: re.sub(r'\<img.*src\=\"(http\://.*\.png)\".*\/\>', '[insert picture: []("\\1")]', my_str)
Out[141]: '[insert picture: []("http://www.example.com/image.png")]'
from urlextract import URLExtract
text="<img alt=src="http://www.example.com/image.png" />"
extractor = URLExtract()
urls = extractor.find_urls(text)
print(urls) # prints: ['www.example.com/image.png']