正则表达式获取src包含文本的img标签

Regular Expression to get img tag where src contains text

使用 VB.net,我有一个包含 HTML 的字符串。 HTML 中有几个 img 标签。我正在尝试根据包含特定字符 (image002) 的 src 获取整个特定的 img 标签,以便我可以用一些新代码替换整个图像标签。

我目前拥有的:

dim bodyContent as string = "<html><body><img src='image001.png'/><img src='image002.png'/></body></html>"
dim searchStr as string = "image002"

Dim imgRegex As New Regex("@""<img.*?src=""(?" & searchStr & ".*?)"".*?>""", RegexOptions.IgnoreCase)
bodyContent = imgRegex.Replace(bodyContent, "<div class='newCode'><a href='https://mywebsite.net/ViewAttachment'><img src='https://mywebsite.net/ViewThumbnail'></a></div>")

但是,我的正则表达式不正确。关于获得正确的 RegEx 的任何建议?

您可以使用

Dim imgRegex As New Regex("<img[^>]+" & searchStr & "[^>]*>", RegexOptions.IgnoreCase)

正则表达式匹配

  • <img - <img 字符串
  • [^>]+ - >
  • 以外的一个或多个字符
  • & searchStr & - searchStr 中的文字文本(注意它在这里是这样工作的,因为变量只包含单词字符,在一般情况下,您需要使用 [=19= 转义它])
  • [^>]*> - > 以外的零个或多个字符,然后是 > 个字符。

完整 VB.NET demo:

Dim bodyContent as string = "<html><body><img src='image001.png'/><img src='image002.png'/></body></html>"
Dim searchStr as string = "image002"
Dim imgRegex As New Regex("<img[^>]+" & searchStr & "[^>]*>", RegexOptions.IgnoreCase)
bodyContent = imgRegex.Replace(bodyContent, "<div class='newCode'><a href='https://mywebsite.net/ViewAttachment'><img src='https://mywebsite.net/ViewThumbnail'></a></div>")
Console.Write(bodyContent)

输出:

<html><body><img src='image001.png'/><div class='newCode'><a href='https://mywebsite.net/ViewAttachment'><img src='https://mywebsite.net/ViewThumbnail'></a></div></body></html>