正則表達式

android 有些地方用到了正則表達式,如判讀電話號碼是否有效,email是否有效等,把網上的資料 簡單整理了一下與大家分享。

1. 什麼是正則表達式

基本說來,正則表達式是一種用來描述一定數量文本的模式。 Regex 代表 Regular Express
在編寫處理字符串的程序 或網頁時,經常會有查找符合某些複雜規則的字符串的需要。正則表達式 就是用於描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼

2. 正則表達式中的特殊字符
[ ] / ^ $ . | ? * + ( )

這些特殊字符也被稱作元字符。

如果你想在正則表達式中將這些字符用作文本字符,你需要用反斜槓“ / ”對其進行換碼 (escape) 。例如你想匹配“ 1+1= 2 ,正確的表達式爲 <<1/+1=2>>.

需要注意的是, <<1+1=2>> 也是有效的正則表達式。但它不會匹配“ 1+1= 2 ,而會匹配“ 123+111= 234 中的“ 111=2 ”。因爲“ + ”在這裏表示特殊含義(重複 1 次到多次)。

在編程語言中,要注意,一些特殊的字符會先被編譯 器處理,然後再傳遞給正則引擎。因此正則表達式 <<1/+2=2>> C++ 中要寫成“ 1//+1= 2 。爲了匹配“ C:/temp ”,你要用正則表達式 <<C://temp>> 。而在 C++ 中,正則表達式則變成了“ C:////temp ”。


3. 元字符描述

. 匹配任何單個字符。例如正則表達式 r.t 匹配這些字符串: rat rut r t ,但是不匹配 root

$
匹配行結束符。例如正則表達式 weasel$ 能夠匹配字符串 "He's a weasel" 的末尾,但是不能匹配字符串 "They are a bunch of weasels."

^
匹配一行的開始。例如正則表達式 ^When in 能夠匹配字符串 "When in the course of human events" 的開始,但是不能匹配 "What and When in the"

*
匹配 0 或多個正好在它之前的那個字符。例如正則表達式 .* 意味着能夠匹配任意數量的任何字符。

[ ]
匹配括號中的任何一個字符。例如正則表達式 r[aou]t 匹配 rat rot rut ,但是不匹配 ret 。可以在括號中使用連字符 - 來指定字符的區間,例如正則表達式 [0-9] 可以匹配任何數字字符;還可以制定多個區間,例如正則表達式 [A-Za-z] 可以匹配任何大小寫字母。另一個重要的用法是 排除 ,要想匹配除了指定區間之外的字符 —— 也就是所謂的補集 —— 在左邊的括號和第一個字符之間使用 ^ 字符,例如正則表達式 [^269A-Z] 將匹配除了 2 6 9 和所有大寫字母之外的任何字符。

( )
( ) 之間的表達式定義 group ),並且將匹配這個表達式的字符保存到一個臨時區域(一個正則表達式中最多可以保存 9 個),它們可以用

的符號來引用。

|
將兩個匹配條件進行邏輯 Or )運算。例如正則表達式 (him|her) 匹配 "it belongs to him" "it belongs to her" ,但是不能匹配 "it belongs to them." 。注意:這個元字符不是所有的軟件 都支持的。

+
匹配 1 或多個正好在它之前的那個字符。例如正則表達式 9+ 匹配 9 99 999 等。注意:這個元字符不是所有的軟件都支持的。

?
匹配 0 1 個正好在它之前的那個字符。注意:這個元字符不是所有的軟件都支持的。

{i} {i,j}
匹配指定數目的字符,這些字符是在它之前的表達式定義的。例如正則表達式 A[0-9]/{3/} 能夠匹配字符 "A" 後面跟着正好 3 個數字字符的串,例如 A123 A348 等,但是不匹配 A1234 。而正則表達式 [0-9]/{4,6/} 匹配連續的任意 4 個、 5 個或者 6 個數字字符。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章