Golang中如何使用正则表达式获取多个匹配值
Golang中如何使用正则表达式获取多个匹配值
author, _ := regexp.Compile("<td>(.*?) ")
需要返回: Teste1 Teste2 Teste3
5 回复
您的帖子未包含任何输入数据。请检查您对标记的使用方式,可能由于问题格式不当导致数据对我们不可见。
更多关于Golang中如何使用正则表达式获取多个匹配值的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
哇哦,
我之前不知道有这个包。
非常感谢。
它起作用了

为什么不直接解析HTML并查找标签呢?对html包文档中的示例稍作修改就足够了:
doc, err := html.Parse(r)
if err != nil {
// ...
}
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "td" {
//现在对内部文本进行处理,比如打印它
fmt.Printf("<td> content is: %s\n", n.FirstChild.Data)
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
f(doc)
这是一个在playground上的可运行示例:https://play.golang.org/p/SYTxumORJoT
我的字符串包含一个HTML页面,我需要获取所有以"td"开头的值 示例: 构建我的字符串
resp, err := http.Get("http://www4.tjmg.jus.br/juridico/sf/proc_resultado.jsp?comrCodigo=479&numero=1&listaProcessos=01147778620178130479&btn_pesquisar=Pesquisar")
if err != nil {
log.Fatalln("Erro")
}
html, _ := ioutil.ReadAll(resp.Body)
我的正则表达式代码
author, _ := regexp.Compile("<td>(.*?) ")
我想要获取字符串html中所有包含td的值。
抱歉,我的英语不是很好
在Go语言中,可以使用regexp包中的FindAllStringSubmatch方法来获取正则表达式的多个匹配值。以下是一个完整的示例,展示如何从给定的字符串中提取所有匹配的<td>标签内的内容:
package main
import (
"fmt"
"regexp"
)
func main() {
// 示例HTML字符串
html := `<table>
<tr><td>Teste1</td></tr>
<tr><td>Teste2</td></tr>
<tr><td>Teste3</td></tr>
</table>`
// 编译正则表达式,匹配<td>标签内的内容
re := regexp.MustCompile(`<td>(.*?)</td>`)
// 查找所有匹配项
matches := re.FindAllStringSubmatch(html, -1)
// 遍历匹配结果并输出
for _, match := range matches {
if len(match) >= 2 {
fmt.Println(match[1]) // match[1]包含第一个捕获组的内容
}
}
}
输出结果:
Teste1
Teste2
Teste3
代码说明:
- 使用
regexp.MustCompile编译正则表达式<td>(.*?)</td>,其中(.*?)是非贪婪匹配,用于捕获<td>和</td>之间的内容 FindAllStringSubmatch返回一个二维切片,每个元素代表一个完整匹配,其中第一个元素是整个匹配的字符串,后续元素是各个捕获组的内容- 通过遍历匹配结果,提取每个匹配项的第一个捕获组(索引为1)即可获得所需的值
如果需要在更复杂的HTML中提取数据,建议使用专门的HTML解析库如goquery,但对于简单的模式匹配,正则表达式是有效的解决方案。

