【发布时间】:2014-01-03 09:23:03
【问题描述】:
我正在尝试解析 HTML 文件以计算 HTML 标记。不过我对正则表达式不太熟悉。
我当前的代码仅按行计算。不是逐个标记。它返回整行。
while(<SUB>){
while(/(<[^\/][a-z].*>)/gi){
print $_;
$count++;
}
}
假设我们在文件中有这样一行
<div>blahblahblah</div><h1>hello</h1><p>blah</>
我需要提取每个 HTML 标签的开始标签以及 <hr>、<br> 和 <img> 等标签。
你能不能把我引向正确的方向。
【问题讨论】:
-
考虑使用搜索引擎寻找 RegEx 的替代品。 IE。必应搜索bing.com/search?q=parse+html+perl+module 可能会给你一些链接。
-
对上述问题的选定答案说,“正则表达式查询不具备将 HTML 分解成有意义的部分的能力。”这完全正确吗?
-
通读高评价的答案——那里有很多有趣的东西。第三个(关于语法)为您提供了解释限制背后理论的链接。请注意,不同的语言/库通常会实现一些扩展,这些扩展可能允许对嵌套结构进行一些解析。
-
@shan:是的,完全正确。尝试使用正则表达式处理 HTML 是一个糟糕的选择。
-
虽然您确实不应该使用正则表达式来 解析 html,但我认为当您只想计算标签时,它们不是太糟糕的选择...