針對yu演算法中存在的不足王美陽等人在研究中提出了新的正規表示式分組演算法——iga 演算法。iga 演算法更新了正規表示式之間相互作用大小的描述,通過引入膨脹係數這一概念,來衡量正規表示式相互作用的大小。膨脹率的定 義如下:
ec(r1, r2) = #dfa(r1 |r2) /(#dfa(r1)+#dfa(r2))
公式的含義:將兩個正規表示式合併轉換為dfa的狀態數除以各自轉換為dfa的狀態數的和。
通過膨脹率,可以準確測量兩個正規表示式之間的相互影響程度,如果ec(r1, r2) = 1 說明兩個正規表示式不存在互相影響,如果ec(r1, r2) > 1,說明兩個正則表 達式之間存在相互作用,且膨脹率越大,說明其合併後的 dfa 狀態數膨脹越大, 如果ec(r1, r2) < 1則認為兩個正規表示式之間的影響是良性的,通過合併這兩個 正規表示式可以減少最終 dfa 的狀態數。
演算法步驟:
iga 演算法的執行步驟與 yu 演算法類似,但存在兩個不同點,一是 iga 演算法使用 膨脹率度量正規表示式之間的互相影響,二是 iga 演算法在每次見正規表示式加入 到分組中後,會從原來的正規表示式影響關係圖中增加乙個代表該分組的節點,並 更新其他正規表示式與該分組之間的膨脹率。
演算法的缺點:
(1)首先,我們可以看出,在用iga演算法進行正規表示式分組時,首先要計算ec,這就要求兩兩比較,這往往需要很長的時間,拖慢了演算法的效能。
(2)iga演算法在不斷「擇優錄取」,這就為後面留下了「後遺症」,可能會導致很多不好的正規表示式聚集在一起進行分組。
正規表示式 分組
正規表示式對於單個字元的重複,非常方便。比如 d 表示1個或多個數字,表示重複0次或多次 重複1次或多次 重複0次或1次 重複n次 重複n次或多次 重複n次到m次 指定的字元後加特定的限定符,即可實現單字元的重複,那麼,對於一組字串的重複,正規表示式該如何操作?用小括號來指定子表示式 或稱分組 對指...
分組 正規表示式
在正規表示式中,可以用小括號將一些規則括起來當作分組,分組可以作為乙個元字元來看待。d d這是乙個簡單的且不完善的匹配 ip 位址的正規表示式,因為它除了能匹配正確的 ip 位址外,還能匹配如 322.197.578.888 這種不存在的 ip 位址。當然,用這個表示式簡單匹配成功後可以在利用 ph...
正規表示式 分組
group 分組 分了幾組就看分了幾個小括號 分了幾對小括號 當有巢狀的小括號時,怎麼區分那個是第一組那個是第二組呢?只需要數小括號邊的左小括號,看到第乙個左小括號就是第一組,第二個左小括號就是第二組 group 分組 public class test8 3到5位的數字 a z 2位的字母 a z...