本文介绍在 Go 语言中通过正则表达式快速提取 HTML 字符串内 标签 src 属性值的方法,适用于 RSS 内容解析等轻量场景,并提供可直接运行的代码示例与关键注意事项。
本文介绍在 go 语言中通过正则表达式快速提取 html 字符串内 `` 标签 `src` 属性值的方法,适用于 rss 内容解析等轻量场景,并提供可直接运行的代码示例与关键注意事项。
在处理 RSS 订阅源等结构松散的 HTML 片段时(如
以下是一个健壮且实用的实现:
package main
import (
"fmt"
"regexp"
)
var imgRE = regexp.MustCompile(`@@##@@]+\bsrc=["']([^"']+)["']`)
func findImages(html string) []string {
matches := imgRE.FindAllStringSubmatch([]byte(html), -1)
result := make([]string, 0, len(matches))
for _, m := range matches {
if len(m) > 1 {
// m[0] 是完整匹配,m[1] 是 src 属性值(捕获组)
result = append(result, string(m[1]))
}
}
return result
}
func main() {
html := `<p>Check this: @@##@@ and @@##@@.</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill9263" title="Html2md"><img
src="https://img.php.cn/upload/skill/000/000/081/179249945220127.jpg" alt="Html2md" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill9263" title="Html2md" class="overflowclass">Html2md</a>
<p class="overflowclass">使用 Readability + Turndown 将 HTML 页面转换为干净的、Agent 友好的 Markdown。去除导航栏、广告、页脚、Cookie 横幅、社交按钮等干扰元素。支持 URL...</p>
</div>
<a rel="nofollow" href="/xiazai/skill9263" title="Html2md" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>`
imgs := findImages(html)
fmt.Println(imgs) // 输出: [logo.png banner.jpg]
}
✅ 关键说明:
- 使用反引号(`)包裹正则字符串,避免手动转义双引号/单引号;
- \b 确保 src 是单词边界开始的独立属性名,防止误匹配 srcset 或 data-src;
- ["']([^"']+)["'] 同时兼容双引号与单引号包围的 src 值,提升鲁棒性;
- FindAllStringSubmatch 返回 [][]byte,需显式转换为 string;
- 不推荐用于嵌套、自闭合异常或含 JS 动态生成的 HTML——此时应改用 golang.org/x/net/html 进行标准 DOM 解析。
⚠️ 重要提醒:正则仅适用于已知格式简单、可信来源的 HTML 片段(如清洗后的 RSS 描述)。若 HTML 可能包含注释、CDATA、换行符内嵌属性或 SVG


前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










