前段时间,我开始为WikiLeaks 发布的电缆编写基于BNF 的语法。但是我现在意识到我的方法可能不是最好的,我正在寻找一些改进。
一个机箱由三部分组成。头部有一些RFC2822风格的格式。这解析通常是正确的。文本部分有一个更非正式的规范。例如,有一条REF线。这应该以 开头REF:
,但我发现了不同的版本。以下正则表达式捕获大多数情况:^\s*[Rr][Ee][Ff][Ss: ]
. 所以前面有空格,不同的情况等等。文本部分主要是带有一些特殊格式标题的纯文本。
我们要识别每个字段(日期、REF 等)并放入数据库。我们选择了 Python 的 SimpleParse。目前,解析在它无法识别的每个字段处停止。我们现在正在寻找更容错的解决方案。所有字段都有某种顺序。当解析器无法识别某个字段时,它应该在当前字段中添加一些“未识别”-blob 并继续。(或者也许你在这里有一些更好的方法)。
你会建议什么样的解析器或其他类型的解决方案?周围有更好的吗?