正規表示式基礎知識
我們先從簡單的開始。假設你要搜尋乙個包含字元「
cat」的字串,搜尋用的正規表示式就是「
cat」。如果搜尋對大小寫不敏感,單詞「
catalog
」、「catherine
」、「sophisticated
」都可以匹配。也就是說:
正規表示式:
cat
匹配:cat
,catalog
,catherine
1.1句點符號
假設你在玩英文拼字遊戲,想要找出三個字母的單詞,而且這些單詞必須以「
t」字母開頭,以「
n」字母結束。另外,假設有一本英文本典,你可以用正規表示式搜尋它的全部內容。要構造出這個正規表示式,你可以使用乙個萬用字元——句點符號「
.」。這樣,完整的表示式就是「
t.n」,它匹配「
tan」、「
ten」、「
tin」和「
ton」,還匹配「
t#n」、「
tpn」甚至「
t n」,還有其他許多無意義的組合。這是因為句點符號匹配所有字元,包括空格、
tab字元甚至換行符:
正規表示式:
t.n
匹配:tan,
ten,
tin,
ton,
t n,
t#n,
tpn等
1.2方括號符號
為了解決句點符號匹配範圍過於廣泛這一問題,你可以在方括號(「
」)裡面指定看來有意義的字元。此時,只有方括號裡面指定的字元才參與匹配。也就是說,正規表示式「
t[aeio]n
」只匹配「
tan」、「
ten」、「
tin」和「
ton」。但「
toon
」不匹配,因為在方括號之內你只能匹配單個字元:
正規表示式:
t [ aeio ] n
匹配:tan,
ten,
tin,
ton
1.3「或」符號
如果除了上面匹配的所有單詞之外,你還想要匹配「
toon
」,那麼,你可以使用「
|」操作符。「
|」操作符的基本意義就是「或」運算。要匹配「
toon
」,使用「
t(a|e|i|o|oo)n
」正規表示式。這裡不能使用方擴號,因為方括號只允許匹配單個字元;這裡必須使用圓括號「
()」。圓括號還可以用來分組,具體請參見後面介紹。
正規表示式:
t ( a | e | i | o | oo ) n
匹配:tan,
ten,
tin,
ton,
toon
1.4表示匹配次數的符號
表一顯示了表示匹配次數的符號,這些符號用來確定緊靠該符號左邊的符號出現的次數:
表示次數的符號
符號次數
*
零次或多次
+
一次或多次
?
零次或一次
n次從n
次到m次
假設我們要在文字檔案中搜尋美國的社會安全號碼。這個號碼的格式是
999-99-9999
。用來匹配它的正規表示式如圖一所示。在正規表示式中,連字元(「
-」)有著特殊的意義,它表示乙個範圍,比如從0到
9。因此,匹配社會安全號碼中的連字符號時,它的前面要加上乙個轉義字元「\」。
連線字元
[0-9] \- [0-9] \- [0-9]
前三個數字
假設進行搜尋的時候,你希望連字符號可以出現,也可以不出現——即,
999-99-9999
和999999999
都屬於正確的格式。這時,你可以在連字符號後面加上「?」數量限定符號
可選的連線字元
[0-9] \-? [0-9] \-? [0-9]
前三個數字
下面我們再來看另外乙個例子。美國汽車牌照的一種格式是四個數字加上二個字母。它的正規表示式前面是數字部分「
[0-9]
」,再加上字母部分「
[a-z]
」。正規表示式。
[0-9] [a-z]
前四個數字
後了個字母
1.5
「否」符號
「^」符號稱為「否」符號。如果用在方括號內,「
^」表示不想要匹配的字元。例如,圖四的正規表示式匹配所有單詞,但以「
x」字母開頭的單詞除外。
[^x][a-z]+
第乙個字母
後續字元可以是a到
z
不能為『x』
之間的任意字母
1.6
圓括號和空白符號
假設要從格式為「
june 26, 1951
」的生日日期中提取出月份部分,用來匹配該日期的正規表示式
必需的空格
必需的逗號
年份值[a-z]+\s+[0-9],\s*[0-9]
月份值至少
月份內的日期
可選的空格
乙個字元
乙個或兩個數字
新出現的「
\s」符號是空白符號,匹配所有的空白字元,包括
tab字元。如果字串正確匹配,接下來如何提取出月份部分呢?只需在月份周圍加上乙個圓括號建立乙個組,然後用
oro api
(本文後面詳細討論)提取出它的值。修改後的正規表示式
必需的空格
必需的逗號
年份值([a-z]+)\s+[0-9],\s*[0-9]
月份值
月份內的日期
可選的空格
第乙個組
乙個或兩個數字
1.7其它符號
為簡便起見,你可以使用一些為常見正規表示式建立的快捷符號。
常用符號
符號等價的正規表示式
\d
[0-9]
\d
[^0-9]
\w
[a-z0-9]
\w
[^a-z0-9]
\s
[\t\n\r\f]
\s
[^\t\n\r\f]
例如,在前面社會安全號碼的例子中,所有出現「
[0-9]
」的地方我們都可以使用「
\d」。修改後的正規表示式
\d
\- \d
\- \d
0
給主人留下些什麼吧!~~
正規表示式基礎知識
我們先從簡單的開始。假設你要搜尋乙個包含字元 cat 的字串,搜尋用的正規表示式就是 cat 如果搜尋對大小寫不敏感,單詞 catalog catherine sophisticated 都可以匹配。也就是說 1.1 句點符號 假設你在玩英文拼字遊戲,想要找出三個字母的單詞,而且這些單詞必須以 t ...
正規表示式基礎知識
乙個正規表示式就是由普通字元 例如字元 a 到 z 以及特殊字元 稱為元字元 組成的文字模式。該模式描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。如 jscript vbscript 匹配 t t 匹配乙個空白行。d d d d 驗證乙個i...
正規表示式基礎知識
正規表示式基礎知識 正規表示式是一種可以用於模式匹配和替換的強有力的工具,乙個正規表示式就是由普通的字元 例如字元 a 到 z 以及特殊字元 稱為元字元 組成的文字模式,它描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。正規表示式在字元資料處...