html - 在Go中匹配html标记之外的html文本的最佳方法是什么?

标签 html regex go

我有一堆正在解析的html,如果它们包含某些文本,则需要删除某些<a>标记。通常,我会使用Goquery,但是我要搜索的文本通常不在html标签本身之内。例如,此html:

<html><body>
This is the start.            
<a href="http://example.com/path">We don't want to match this text.</a>
<a href="http://www.example.com/another/path" style="font-family:Arial, Helvetica, 'sans-serif'; color:#838383;font-size:12px; line-height:14px"></a> match this text.<a href="blah">We also don't want to match this text</a>
</body></html>

我正在使用此正则表达式,但失败了并且与我不想匹配的文本匹配:
(?is)<a[^>]+href=["'](?P<link>.*?)["']*.?> match this text\.

https://regex101.com/r/iEXpqc/1

最佳答案

这样,使用(不是,但是可以重新实现逻辑):

xmlstarlet ed -d '//a[contains(text(), "want to match")]' file.html

输出量
<?xml version="1.0"?>
<html>
  <body>
This is the start.  

<a href="http://www.example.com/another/path" style="font-family:Arial, Helvetica, 'sans-serif'; color:#838383;font-size:12px; line-height:14px"/> match this text.
</body>
</html>

注意
  • 如果要即时替换,请添加-L开关
  • 关于html - 在Go中匹配html标记之外的html文本的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59339541/

    相关文章:

    unix - 如何使用管道在 Go 中写入 `cat`

    python - 与 Python 等其他语言相比,golang 中的 WaitGroup 是退步了吗?

    html - 通过引用托管在不同网站上的外部热链接图像来应用 CSS

    正则表达式:用制表符替换 4 个空格组(从换行符到一个字符)

    javascript - 如何获得正则表达式匹配的有效部分

    javascript - 正则表达式匹配 "everything but"与 webpack 的 kebab-case

    javascript - 为什么触发复选框时 "checked"属性不为真?

    javascript - 行内 block 删除底部空间以添加文本

    javascript - 每个项目的不同随机数

    go - 在 Go 中编写接口(interface)而不重复自己