📅  最后修改于: 2023-12-03 14:55:54.323000             🧑  作者: Mango
正则表达式是一种强大的字符串匹配工具,可以用来匹配 HTML 中的各种标签。在 HTML 中,img 标签用于显示图片。查找 img 标签可以帮助我们提取 HTML 中的图片信息或者修改图片的属性。下面是一些方法可以使用正则表达式查找 img 标签。
使用正则表达式来匹配包含 src 属性的 img 标签。
<img\s[^>]*?src\s*=\s*(['"])(.*?)\1
这个正则表达式会匹配以下规则的 img 标签:
<img src='image.png'>
<img src="image.png">
<img src = 'image.png'>
<img src = "image.png">
<img src="image.png" alt="my image">
我们可以使用这个正则表达式来提取 img 标签中的 src 属性值,例如:
import re
html = '<img src="image.png" alt="my image">'
result = re.search(r'<img\s[^>]*?src\s*=\s*([\'"])(.*?)\1', html)
if result:
src_value = result.group(2)
print(src_value) # 输出 'image.png'
如果我们想要查找不包含 src 属性的 img 标签,可以使用以下正则表达式:
<img(?![^>]*?src)[^>]*>
这个正则表达式会匹配以下规则的 img 标签:
<img>
<img alt="my image">
<img class="my-image">
使用这个正则表达式来查找不包含 src 属性的 img 标签,例如:
import re
html = '<img alt="my image">'
result = re.search(r'<img(?![^>]*?src)[^>]*>', html)
if result:
print('Found img without src attribute')
假设我们想要查找包含指定 class 的 img 标签,可以使用以下正则表达式:
<img(?:\s+[^>]*?class\s*=\s*['"](?:.*?\s+)?{class_name}(?:\s+.*?)?['"][^>]*?|(?!class=)[^>]*?class=["'][^'"]*?\b{class_name}\b[^'"]*?['"][^>]*?)*>
将 {class_name}
替换为要查找的 class 名称即可。
这个正则表达式会匹配以下规则的 img 标签:
<img class="my-image">
<img class="my-image other-class">
<img alt="my image" class="my-image">
使用这个正则表达式来查找包含 my-image
class 名称的 img 标签,例如:
import re
html = '<img class="my-image" alt="my image">'
result = re.search(r'<img(?:\s+[^>]*?class\s*=\s*[\'"](.*?\bmy-image\b.*?)?[\'"][^>]*?|(?!class=)[^>]*?class=["\'][^\'"]*?\bmy-image\b[^\'"]*?[\'"][^>]*?)*>', html)
if result:
print('Found img with my-image class')
正则表达式可以帮助程序员轻松地查找 HTML 中的各种标签。本文介绍了如何使用正则表达式查找 img 标签,包括包含 src 属性的 img 标签、不包含 src 属性的 img 标签、以及包含指定 class 的 img 标签。使用这些方法,你可以方便地提取 HTML 中的图片信息或者修改图片的属性。