Dregexp正則表達(dá)式
Dregexp全名Dream Regexp是一個(gè)用java語言實(shí)現(xiàn)的,基于正則表達(dá)式的格式化解析和糾正原文的工具。
其解析格式十分靈活,糾錯(cuò)能力非常強(qiáng)大,可以適應(yīng)不同功能需要。
靈活
Dregexp采用正則表達(dá)式作為格式的模式串,可以輕易的給出匹配的范圍,而且格式串還擁有良好的擴(kuò)展性。
如:常見的變量定義
可以使用格式模式串:int\s+\w+(=\d+)?;
所匹配的內(nèi)容1:int i;
所匹配的內(nèi)容2:int i=8;
一個(gè)模式·可以匹配多種格式,這正體現(xiàn)了Dregexp的強(qiáng)大之處。
糾錯(cuò)能力分析能力
Dregexp的糾錯(cuò)能力體現(xiàn)在其糾正器機(jī)制。Dregexp允許用戶配置一系列的糾正器安裝在指定的塊上,這樣當(dāng)掃描時(shí),一旦發(fā)現(xiàn)這些塊與原文不匹配時(shí),立刻調(diào)用塊上安裝的糾正器進(jìn)行糾正。
例如:格式串為:1[2-4]5 原文為165
分析:原文中6與格式串[2-4]不相匹配
此時(shí)將會(huì)調(diào)用[2-4]比較塊上安裝的糾正器
Dregexp的分析是由解析器來完成的。類似于糾正器都是需要安裝。不同的是解析器安裝在一個(gè)格式模式串上,而不是格式串上的比較塊。當(dāng)原文與格式串產(chǎn)生了一次匹配時(shí)調(diào)用解析析器來解析原文。
例如:格式<[^\s]+> 原文
234
原文中
與格式<[^\s]+>已產(chǎn)生匹配
此時(shí)調(diào)用安裝在該格式串上的解析器完成解析。
備注:原文可以很長,格式串將依次掃描出所有匹配項(xiàng)
適應(yīng)性
Dregexp的適應(yīng)性除了表現(xiàn)在格式串正則表達(dá)式的擴(kuò)展格式的能力,重點(diǎn)還體現(xiàn)在糾正器與解析器機(jī)制。
具體有:
1 糾正器和解析器可以安裝在任何地方。
2 Dregexp要求所安裝的糾正器或解析器必須是用戶去實(shí)現(xiàn)子類。也就是說用戶可以按照需要自由的完成各種功能,而Dregexp已經(jīng)提供了完備的一系列的方法取得當(dāng)前原文的掃描情況,包括出錯(cuò)點(diǎn),匹配歷程等等。
可以說Dregexp已經(jīng)適應(yīng)了任何一種業(yè)務(wù)功能的需要。
擴(kuò)展性
Dregexp擴(kuò)展性體現(xiàn)在其靈活性與適應(yīng)性上。
值得一提的是:Dregexp的格式串支持捕獲組。
Dregexp的糾正其允許選擇糾正之后是否要求糾正處與原文再次比較。
如:模式1[2-4]5 原文為165
調(diào)用糾正器中修改原文6為8,此時(shí)原文變?yōu)?85。若要求再次比較還會(huì)發(fā)生[2-4]與8比較,若不要求則不會(huì)發(fā)生比較
Dregexp的解析器允許可選的是否繼續(xù)掃描下文。
如:模式<^\s+> 原文
12321
1231
當(dāng)
與<^\s+>匹配時(shí)調(diào)用解析器。解析器可以選擇是否繼續(xù)掃描。若選擇繼續(xù)掃描就會(huì)發(fā)現(xiàn)下文
與<^\s+>匹配,若選擇不繼續(xù)則掃描到此結(jié)束,不會(huì)出現(xiàn)下文中任何內(nèi)容。
糾正器與解析器的選擇操作可以有效的擴(kuò)展各種細(xì)粒度較高的功能
