preloader
軟體工程

Ruby的Regular expression

這篇只是當作自己的筆記。

假設兩個字串分別是 「<疾病>發生<因>子」和「肩<背>」,要萃取出小於<符號和大於>符號夾起來的字詞,Ruby的Regular expression可以寫成 /\<([^\<^\>]+)\>/uu 是指以 utf-8 長度辨認 Regular expression。

這樣寫的話,可以取出「疾病」,「因」和「背」,唯不適用於巢狀的小於和大於符號夾起來的字詞,例如「<疾<病>>發生因子」。

 

另外,Ruby的 Regular expression中,括號“(”和“)”結合String的scan方法,可以幫助取出括號內的字詞,例如上面的例子「<疾病>發生<因>子」,用以下程式碼:可以取出小於和大於符號夾起來的字詞(central Pattern):

array_re_matchedPattern = Array.new # store the central Patterns

pattern = <疾病>發生<>子”

re_pattern = <meta charset="utf-8">/\<([^\<^\>]+)\>/u

pattern.scan(re_pattern) { | matched |

    matched.each{ |centralPattern|

        array_re_matchedPattern << centralPattern

    }

}

即可取得「疾病」和「因」。