📜  正则表达式查找 img 标签 (1)

📅  最后修改于: 2023-12-03 14:55:54.323000             🧑  作者: Mango

使用正则表达式查找 img 标签

正则表达式是一种强大的字符串匹配工具,可以用来匹配 HTML 中的各种标签。在 HTML 中,img 标签用于显示图片。查找 img 标签可以帮助我们提取 HTML 中的图片信息或者修改图片的属性。下面是一些方法可以使用正则表达式查找 img 标签。

查找包含 src 属性的 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 标签

如果我们想要查找不包含 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 标签

假设我们想要查找包含指定 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 中的图片信息或者修改图片的属性。