Groovy Tip 35 正規表示式 四

2021-08-23 15:11:53 字數 1388 閱讀 7621

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 語言中,正規表示式的匹配運算非常簡單。麻煩的是一些萬用字元需要記住,然後加以靈活運用。...