【发布时间】: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("<img(?:\s+[^>]*?)?\ssrc='" & searchStr & "[^']*'[^>]*>", RegexOptions.IgnoreCase) -
这给了我一些错误。根据您的第一条评论进行一些调整后,我得到了它:
Dim imgRegex As New Regex("<img[^>]+" & searchStr & ".*?>", RegexOptions.IgnoreCase)感谢您的帮助! -
这是否意味着您有不同的输入字符串?请编辑问题。注意
"<img[^>]+" & searchStr & ".*?>"可能会在img标记之外找到searchStr,因为.匹配任何字符。