Dregexp正则表达式
Dregexp全名Dream Regexp是一个用java语言实现的,基于正则表达式的格式化解析和纠正原文的工具。
其解析格式十分灵活,纠错能力非常强大,可以适应不同功能需要。
灵活
Dregexp采用正则表达式作为格式的模式串,可以轻易的给出匹配的范围,而且格式串还拥有良好的扩展性。
如:常见的变量定义
可以使用格式模式串:int\s+\w+(=\d+)?;
所匹配的内容1:int i;
所匹配的内容2:int i=8;
一个模式·可以匹配多种格式,这正体现了Dregexp的强大之处。
纠错能力分析能力
Dregexp的纠错能力体现在其纠正器机制。Dregexp允许用户配置一系列的纠正器安装在指定的块上,这样当扫描时,一旦发现这些块与原文不匹配时,立刻调用块上安装的纠正器进行纠正。
例如:格式串为:1[2-4]5 原文为165
分析:原文中6与格式串[2-4]不相匹配
此时将会调用[2-4]比较块上安装的纠正器
Dregexp的分析是由解析器来完成的。类似于纠正器都是需要安装。不同的是解析器安装在一个格式模式串上,而不是格式串上的比较块。当原文与格式串产生了一次匹配时调用解析析器来解析原文。
例如:格式<[^\s]+> 原文
234
原文中
与格式<[^\s]+>已产生匹配
此时调用安装在该格式串上的解析器完成解析。
备注:原文可以很长,格式串将依次扫描出所有匹配项
适应性
Dregexp的适应性除了表现在格式串正则表达式的扩展格式的能力,重点还体现在纠正器与解析器机制。
具体有:
1 纠正器和解析器可以安装在任何地方。
2 Dregexp要求所安装的纠正器或解析器必须是用户去实现子类。也就是说用户可以按照需要自由的完成各种功能,而Dregexp已经提供了完备的一系列的方法取得当前原文的扫描情况,包括出错点,匹配历程等等。
可以说Dregexp已经适应了任何一种业务功能的需要。
扩展性
Dregexp扩展性体现在其灵活性与适应性上。
值得一提的是:Dregexp的格式串支持捕获组。
Dregexp的纠正其允许选择纠正之后是否要求纠正处与原文再次比较。
如:模式1[2-4]5 原文为165
调用纠正器中修改原文6为8,此时原文变为185。若要求再次比较还会发生[2-4]与8比较,若不要求则不会发生比较
Dregexp的解析器允许可选的是否继续扫描下文。
如:模式<^\s+> 原文
12321
1231
当
与<^\s+>匹配时调用解析器。解析器可以选择是否继续扫描。若选择继续扫描就会发现下文
与<^\s+>匹配,若选择不继续则扫描到此结束,不会出现下文中任何内容。
纠正器与解析器的选择操作可以有效的扩展各种细粒度较高的功能