Groovy Tip 16 正規表示式 一

2021-04-17 20:43:24 字數 2799 閱讀 8774

groovy tip 16 正規表示式 一

在groovy語言中,增加了正規表示式的匹配運算子「==~」。乙個簡單的例子如下:

println"friends"

==~ /friends/

列印結果為:

true

可以看到,在

groovy

語言中,正規表示式的匹配運算非常簡單。麻煩的是一些萬用字元需要記住,然後加以靈活運用。如下:

a?                

表示乙個或零個a

a*                

表示零個或n個

a(零個或以上)

a+                 表示n

個a(1

個或以上)

a               表示n

個a(如,a表示3

個a,即aaa)

a|b                表示a

或b[abcd]              表示a

或b或c

或d,相當於

a|b|c|d

[a-z]               表示a

到z之間的任意乙個,同理

[a-z]是a

到z之間的任意乙個

^a                

表示非a

()                 

表示乙個正規表示式,如

(ab)

匹配ab

.                   

表示任意乙個字元

以上是比較常用的一些萬用字元,有了上面的一些基礎知識,才能做正則運算,下面試舉出一些例子。

比如,我們要匹配乙個數字,如:

defstr =

'1000.31'

首先我們要匹配小數點以前的整數字,數字的正規表示式為/[0-9]/,這表示乙個數字位,那麼多位數的整數的正規表示式為:/[0-9]+/,「+」表示乙個以上,見上面的說明。

接著要匹配小數點,值得注意的是「.」本身是乙個萬用字元,所以要用轉義符來表示,即/.表示小數點。再來匹配小數點後的數字,同樣是/[0-9]+/。

所以匹配小數點以及小數字就是//.[0-9]+/。

因為小數字可以有,也可以沒有,沒有則是乙個整數,所以小數字的正規表示式為/(/.[0-9]+)?/,「?」表示「(/.[0-9]+)」有零個或乙個。

所以數字的正規表示式為:

defre = /[0-

9]+(/.[0-

9]+)?/

我們來測試一下:

printlnstr ==~ re

結果為:true

同理,我們可以分析乙個郵箱的正規表示式:

defstr =

'[email protected]'

defre =

/[a-za-z][^@/.]+@[^@/.]+/.[^@/.]+/

printlnstr ==~ re

郵箱以字母開頭,所以re以

/[a-za-z]/開頭

;接著是非@非「

.」的任意字元,即

/[^@

/.]+

/;然後是

@;把上面的正則連線起來為:

/[a-za-z][^@

/.]+@ /。

然後是非

@的任意字元,即

/[^@

/.]+

/;接著是

.;最後又是非@非「

.」的任意字元。

所以將上面的分析連線起來,為

/[a-za-z][^@/.]+@[^@/.]+/.[^@/.]+/

現在,我們來匹配乙個手機號碼:

defstr =

'13640901345'

defre = /13[

0-9]/

printlnstr ==~ re 即以

13開頭,後面連續

9個數字。

defstr =

'[email protected]'

defre = /[a-za-z][^@/.]+@((sina.com)|(sohu.com))/

printlnstr ==~ re

結果為:

true

defstr =

'[email protected]'

defre = /[a-za-z][^@/.]+@((sina.com)|(sohu.com))/

printlnstr ==~ re

結果也為:

true

defstr =

'[email protected]'

defre = /[a-za-z][^@/.]+@((sina.com)|(sohu.com))/

printlnstr ==~ re

結果就是:

false

Groovy Tip 16 正規表示式 一

groovy tip 16 正規表示式 一 在groovy語言中,增加了正規表示式的匹配運算子 乙個簡單的例子如下 println friends friends 列印結果為 true 可以看到,在 groovy 語言中,正規表示式的匹配運算非常簡單。麻煩的是一些萬用字元需要記住,然後加以靈活運用。...

Groovy Tip 29 正規表示式 三

groovy tip 29 正規表示式 三 本篇主要來談談 捕獲組 和 非匹配組 以及與它們相關聯的一些概念。捕獲組 應該來說是乙個很重要的特性,特別是在進行文書處理的時候。比如,我們經常會遇到一些文字或數字跟一些符號混合在一起,而我們需要把這些文字或數字從這些符號中分離出來。這時候,我們就可以用到...

Groovy Tip 35 正規表示式 四

groovy tip 35 正規表示式 四 我們知道,在正規表示式中,有一些字串被用來的表達一些特殊的用途。比如,代表的是所有的字元 代表的是非 等等。看到這些用法的時候,我們就可以反過來問了,如果 代表的是所有的字元的話,那麼用什麼來匹配字串中的 呢?為了解決這樣的問題,在正規表示式中需要用 加上...