【问题标题】:Regular Expression to get img tag where src contains text正则表达式获取 src 包含文本的 img 标签
【发布时间】:2021-09-23 18:21:38
【问题描述】:

使用 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 不正确。有关获得正确 RegEx 的任何建议?

【问题讨论】:

  • 为什么将 C# 逐字字符串文字放入 VB.NET 字符串文字中?仅使用字符串模式。 (? 是干什么用的?
  • 我不确定——这就是我寻求帮助的原因。我没有使用正则表达式的经验。这只是我在问这个问题之前尝试谷歌时发现的。
  • ideone.com/Z2KwGf,我想你需要Dim imgRegex As New Regex("&lt;img(?:\s+[^&gt;]*?)?\ssrc='" &amp; searchStr &amp; "[^']*'[^&gt;]*&gt;", RegexOptions.IgnoreCase)
  • 这给了我一些错误。根据您的第一条评论进行一些调整后,我得到了它:Dim imgRegex As New Regex("&lt;img[^&gt;]+" &amp; searchStr &amp; ".*?&gt;", RegexOptions.IgnoreCase) 感谢您的帮助!
  • 这是否意味着您有不同的输入字符串?请编辑问题。注意"&lt;img[^&gt;]+" &amp; searchStr &amp; ".*?&gt;" 可能会在img 标记之外找到searchStr,因为. 匹配任何字符。

标签: html regex vb.net


【解决方案1】:

你可以使用

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

正则表达式匹配

  • &lt;img - &lt;img 字符串
  • [^&gt;]+ - 除了&gt; 之外的一个或多个字符
  • &amp; searchStr &amp; - searchStr 中的文字文本(注意它在这里的工作方式是这样的,因为变量只包含单词字符,在一般情况下,您需要使用 Regex.Escape(searchStr) 对其进行转义)
  • [^&gt;]*&gt; - 除了 &gt;&gt; 字符之外的零个或多个字符。

完整的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>

【讨论】:

  • 太棒了!谢谢!
猜你喜欢
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多