使用Java / C / Objective-C中的简单通配符逻辑解析文本

时间:2010-01-28 20:15:48

标签: parsing text-parsing wildcard

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

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

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

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

3 个答案:

答案 0 :(得分:0)

正则表达式替换可行。只需让它将两个值一起返回,如“John%32”,然后拆分响应以获得两个单独的值。

答案 1 :(得分:0)

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

  • 如果您正在处理一组非常规范化的数据(例如,您在上面描述的模板在每种情况下的格式完全相同,不会丢失结束标记,HTML会插入奇数位置等),表达式是解析此类数据的完美工具。
  • 如果无法保证HTML是完美的,那么最直接的解决方案是使用工具将HTML结构加载到DOM中并在文档树中查找相应的元素。

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

答案 2 :(得分:0)

由于您似乎要求用户指定您想要的HTML内容,因此在这里使用正则表达式可能是正常的(为什么您对它们感到厌恶?)。它不再是HTML解析,只是简单的文本匹配,这是正则表达式的设计目的。

以下是一个例子:

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

这将在您的捕获组中留下您需要的内容。