词法分析器与正则表达式

在设计SIEM的时候,一个很重要的环节就是日志的标准化(Normalization,或者叫范式化)。而对此一般采用的手法是采用基于正则表达式的字符串匹配。这次,介绍另外一种方式:不依赖于正则表达式的词法分析器(Antlr)。当然,有的词法分析器依然是基于正则表达式的。

正则表达式被认为是文本处理的首选工具,当我们使用正则表示式时,首先定义一个正则表达式,然后和预期文本进行匹配,最终再按照正则表示式 中的分组,逐一获取相匹配的数据,然后再进行下一步的处理(输出、替换等等)。在进行比较复杂一些的问题时,使用正则表达式,整体处理过程比较漫长,有时 为了处理一个问题,写出的正则表达式晦涩难懂,很不便于维护。

在 Antlr 中词法分析器使用了和语法分析器相同的技术来构造,对词法记号 Token 的匹配使用了递归下降的策略,使得词法分析器具有处理上下文无关文法的能力,而正则表达式所能处理的文法只包含正则文法(线性文法),因此词法分析器可以 处理很多正则表达式难以处理的问题,比如左括号和右括号的成对匹配等。

此外,在 Antlr 中词法分析器所要匹配的词法记号,通过相互引用的方式进行嵌套和递归定义,比正则表达的书写更直观,更加便于维护。

总的来说,使用 Antlr 词法分析器处理文本和正则表达式相比,处理能力更强大,便于开发和测试,在本文的后续部分中,我们一起来看一下如何使用 Antlr 词法分析器完成抽取、转换、重写这三类文本处理工作。

查看这里了解更多关于Antlr的信息。

你可能感兴趣的:(正则表达式,休闲,词法分析器,事件标准化,事件标准化)