1

我正在寻找一个快速的库/类来使用如下表达式解析纯文本:

文字是:<b>Name:</b>John<br><i>Age</i>32<br>

模式是:{*}Name:</b>{%}<br>{*}Age</i>{%}<br>

它会为我找到两个值:John32. 目的是在不涉及重型工具的情况下解析简单的 HTML 网页。它不应该在内部使用字符串操作或正则表达式,但可能通过 char 解析来执行 char。

4

3 回答 3

0

正则表达式替换会起作用。只需让它像“John%32”一样将两个值一起返回,然后拆分响应以获取两个单独的值。

于 2010-01-28T20:22:55.933 回答
0

在这里手动实现逐个字符的解析确实没有任何优势,因为这些问题已经基本上解决了这些类型的问题。

  • 如果您正在处理一组极其规范化的数据(即,您上面描述的模板在每种情况下的格式都完全相同,不可能丢失结束标签、HTML 被插入奇怪的地方等),正则表达式是一个非常适合解析此类数据的工具。
  • 如果不能保证 HTML 是完美的,那么最直接的解决方案就是使用工具将 HTML 结构加载到 DOM 中,并在文档树中找到合适的元素。

开发逐个字符的方法最终可能等同于手动实现上述两个选项之一,这不是一件容易实现的事情。

于 2010-01-28T20:23:19.627 回答
0

由于您似乎是在要求用户指定您想要的 HTML 内容,所以在这里使用正则表达式可能没问题(为什么您对它们有反感?)。它不再是 HTML 解析,只是简单的文本匹配,这就是正则表达式的设计目的。

这是一个例子:

$match =~ s/{\*}/.*?/g;
$match =~ s/{%}/(.*?)/g;
$html =~ /$match/;

这将在您的捕获组中留下您需要的东西。

于 2010-01-28T20:28:34.810 回答