繁体   English   中英

如何使用grep匹配具有属性的HTML特定标签之间的内容?

[英]How to match content between HTML specific tags with attribute using grep?

如果我想匹配 HTML 文件中标记<div class="Message">及其结束标记</div>中包含的文本,我应该将哪个正则表达式与命令grep一起使用?

这是使用GNU grep的一种方法:

grep -oP '(?<=<div class="Message"> ).*?(?= </div>)' file

如果您的标签跨越多行,请尝试:

< file tr -d '\n' | grep -oP '(?<=<div class="Message"> ).*?(?= </div>)'

您可以通过指定正则表达式来做到这一点:

grep -E "^<div class=\"Message\">.*</div>$" input_files

并不是说这只会打印在同一行上找到的外壳。 如果您的标签跨越多行,您可以尝试:

tr '\n' ' ' < input_file | grep -E "^<div class=\"Message\">.*</div>$"

仅使用 grep 无法可靠地做到这一点。 您需要使用 HTML 解析器解析 HTML。

如果 HTML 代码有类似的内容怎么办:

<!--
<div class="Message">blah blah</div>
-->

你会在那个注释掉的代码上得到错误的命中。 以下是一些其他示例,其中仅 regex 选项将使您失败。

考虑使用XML::Grep Perl 模块中的 xmlgrep,如下所述: Extract Title of a html file using grep

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM