代碼庫之「 Ruby 的正則表達式」

2017-11-14  本文已影响24人  Pope怯懦懦地

1. 怎麼定義正則表達式?

/.../%r{...}就夠了,沒必要用Regexp::new;有時會用到options

/\d{3,6}/x =~ '123456'  #=> 0
/\d{3, 6}/x =~ '123456'  #=> nil

2. 元字符有哪些?

也就是,哪些字符需要轉義?(, ), [, ], {, }, ., ?, +, *,以上。這點其實很重要,因為在處理 HTML 這類時很容易迷惑「是不是需要轉義」。

3. 怎麼寫出正確的正則表達式?

余晟老師在這篇裏已經講得很清楚了:就是「與或非」。


Tips:

1. 如何匹配全角空格?

\p{Z}就好了,詳見 @余晟 老師這篇裏講到的 Unicode Property 。

2. 高級技巧之「環視」

簡單來說,就是「向前看」(lookahead)和「向後看」(lookbehind)。當然,這裏的「向前」「向後」都是站在字符串的角度,也就是順著閱讀方向(即「從左到右」)為正向。這是相當有用的技巧,比初學者想像的還要有用。

最好的例子就是匹配<p></p>之間具有某個模式的一段話:

pat = '\d+'
'<p>this is a num 123.</p>'.scan(/(?<=<p>).*(#{pat}).*(?=<\/p>)/x)  #=> [["3"]]

總之,大家多看看主文檔吧。

上一篇下一篇

猜你喜欢

热点阅读