groovy tip 35 正規表示式 四
我們知道,在正規表示式中,有一些字串被用來的表達一些特殊的用途。比如,"."代表的是所有的字元;"^"代表的是非;等等。看到這些用法的時候,我們就可以反過來問了,如果"."代表的是所有的字元的話,那麼用什麼來匹配字串中的"."呢?
為了解決這樣的問題,在正規表示式中需要用"/"加上原字串來匹配這樣的字元。下面來舉乙個例子:
println'a.c' ==~ /a/.c/
執行結果為:
true
其他的這樣一些字元還有:"
這才是我們想要的結果。
值得注意的是,"."並不真正的是匹配所有的字元,有些字元它也不能匹配,如下面的**是可以匹配的:
println'abc/ndef' ==~ /a.c/ndef/
執行結果為:
true
但下面的**就不能匹配了:
println'abc/ndef' ==~ /abc.def/
執行結果為:
false
即"."並不能匹配"/n"--換行符。
如果我們非要"."來匹配所有的字元,也是有辦法的,"(?s)"來強制它匹配所有的字元,示例**如下:
println'abc/ndef' ==~ /(?s)abc.def/
執行結果為:
true
對於"(?s)"這樣的東東,我們稱之為標誌(flag),除了"(?s)"標誌外,還有幾個標誌比較有用。
首先是"(?i)",用來作為忽略大小寫的標誌,如下的示例**:
println'abcdef' ==~ /abc(?i)def/
執行結果為:
true
如果是下面的**:
println'abcdef' ==~ /abcdef/
執行結果就是:
false
既然"(?i)",用來作為忽略大小寫的標誌,就需要乙個結束忽略大小寫的標誌。這就是"(?-i)",如下面的**就是匹配的:
println'abcdefg' ==~ /abc(?i)def(?-i)g/
執行結果為:
true
而下面的**則是不匹配的:
println'abcdefg' ==~ /abc(?i)def(?-i)g/
執行結果為:
false
Groovy Tip 35 正規表示式 四
groovy tip 35 正規表示式 四 我們知道,在正規表示式中,有一些字串被用來的表達一些特殊的用途。比如,代表的是所有的字元 代表的是非 等等。看到這些用法的時候,我們就可以反過來問了,如果 代表的是所有的字元的話,那麼用什麼來匹配字串中的 呢?為了解決這樣的問題,在正規表示式中需要用 加上...
Groovy Tip 29 正規表示式 三
groovy tip 29 正規表示式 三 本篇主要來談談 捕獲組 和 非匹配組 以及與它們相關聯的一些概念。捕獲組 應該來說是乙個很重要的特性,特別是在進行文書處理的時候。比如,我們經常會遇到一些文字或數字跟一些符號混合在一起,而我們需要把這些文字或數字從這些符號中分離出來。這時候,我們就可以用到...
Groovy Tip 16 正規表示式 一
groovy tip 16 正規表示式 一 在groovy語言中,增加了正規表示式的匹配運算子 乙個簡單的例子如下 println friends friends 列印結果為 true 可以看到,在 groovy 語言中,正規表示式的匹配運算非常簡單。麻煩的是一些萬用字元需要記住,然後加以靈活運用。...