正則表達(dá)式元字符和普通字符:
根據(jù)正則表達(dá)式語法規(guī)則,正則表達(dá)式的匹配模式是由一系列的字符構(gòu)成的。
一.普通字符:
大多數(shù)的字符僅能夠描述它們本身,這些字符稱作普通字符,例如所有的字母和數(shù)字。
也就是說普通字符只能夠匹配字符串中與它們相同的字符。
二.元字符:
由于普通字符只能匹配與自身相同的字符,那么正則表達(dá)式的靈活性和強(qiáng)大的匹配功能就不能夠完全展現(xiàn),于是正則表達(dá)式中還規(guī)定了一系列的特殊字符,這些特殊字符不是按照字符的直接量進(jìn)行匹配的,而是具有特殊的語義,
例如下面如下字符:
^ $ . * + ? = ! : | / / ( ) [ ] { }
雖然說上面的字符具有特殊含義,但是某些字符只有在某些上下文環(huán)境中才具有特殊的含義。
如果要匹配這些具有特殊含義的字符直接量,需要在這些字符前面加反斜杠(/)進(jìn)行轉(zhuǎn)義,例如我想匹配一個(gè)$直接量,需要寫成/$,否則就是匹配一個(gè)結(jié)尾位置。正是由于這些特殊字符的存在,才會(huì)是正則表達(dá)式具有強(qiáng)大的功能。
由于它們是構(gòu)造各種匹配復(fù)雜文本的正則表達(dá)式的基本字符,所以被稱作元字符。
元字符的用法會(huì)在后面的章節(jié)中得到介紹,這里只是介紹一下此概念。正則表達(dá)式語言由兩種基本字符類型組成:原義(正常)文本字符和元字符。元字符使正則表達(dá)式具有處理能力。元字符既可以是放在 [] 中的任意單個(gè)字符(如 [a] 表示匹配單個(gè)小寫字符 a ),也可以是字符序列(如 [a-d] 表示匹配 a 、 b 、 c 、 d 之間的任意一個(gè)字符,而 /w 表示任意英文字母和數(shù)字及下劃線),下面是一些常見的元字符:
. 匹配除 /n 以外的任何字符(注意元字符是小數(shù)點(diǎn))。
[abcde] 匹配 abcde 之中的任意一個(gè)字符
[a-h] 匹配 a 到 h 之間的任意一個(gè)字符
[^fgh] 不與 fgh 之中的任意一個(gè)字符匹配
/w 匹配大小寫英文字符及數(shù)字 0 到 9 之間的任意一個(gè)及下劃線,相當(dāng)于 [a-zA-Z0-9_]
/W 不匹配大小寫英文字符及數(shù)字 0 到 9 之間的任意一個(gè),相當(dāng)于 [^a-zA-Z0-9_]
/s 匹配任何空白字符,相當(dāng)于 [ /f/n/r/t/v]
/S 匹配任何非空白字符,相當(dāng)于 [^/s]
/d 匹配任何 0 到 9 之間的單個(gè)數(shù)字,相當(dāng)于 [0-9]
/D 不匹配任何 0 到 9 之間的單個(gè)數(shù)字,相當(dāng)于 [^0-9]
[/u4e00-/u9fa5] 匹配任意單個(gè)漢字(這里用的是 Unicode 編碼表示漢字的 )
正則表達(dá)式限定符
上面的元字符都是針對單個(gè)字符匹配的,要想同時(shí)匹配多個(gè)字符的話,還需要借助限定符。下面是一些常見的限定符 ( 下表中 n 和 m 都是表示整數(shù),并且 0<n<m) :
* 匹配 0 到多個(gè)元字符,相當(dāng)于 {0,}
? 匹配 0 到 1 個(gè)元字符,相當(dāng)于 {0,1}
{n} 匹配 n 個(gè)元字符
{n,} 匹配至少 n 個(gè)元字符
{n,m} 匹配 n 到 m 個(gè)元字符
+ 匹配至少 1 個(gè)元字符,相當(dāng)于 {1,}
/b 匹配單詞邊界
^ 字符串必須以指定的字符開始
$ 字符串必須以指定的字符結(jié)束
說明:
( 1 )由于在正則表達(dá)式中“ / ”、“ ? ”、“ * ”、“ ^ ”、“ $ ”、“ + ”、“(”、“)”、“ | ”、“ { ”、“ [ ”等字符已經(jīng)具有一定特殊意義,如果需要用它們的原始意義,則應(yīng)該對它進(jìn)行轉(zhuǎn)義,例如希望在字符串中至少有一個(gè)“ / ”,那么正則表達(dá)式應(yīng)該這么寫: //+ 。
( 2 )可以將多個(gè)元字符或者原義文本字符用括號括起來形成一個(gè)分組,比如 ^(13)[4-9]/d{8}$ 表示任意以 13 開頭的移動(dòng)手機(jī)號碼。
( 3 )另外對于中文字符的匹配是采用其對應(yīng)的 Unicode 編碼來匹配的,對于單個(gè) Unicode 字符,如 /u4e00 表示漢字“一”, /u9fa5 表示漢字“
主站蜘蛛池模板:
三台县|
额尔古纳市|
益阳市|
长丰县|
沙洋县|
徐汇区|
雅江县|
两当县|
唐河县|
河源市|
华蓥市|
同心县|
青阳县|
柳河县|
葵青区|
东莞市|
高雄市|
衡阳市|
内江市|
红河县|
包头市|
融水|
吉安市|
库车县|
泗水县|
剑河县|
迭部县|
泊头市|
沈阳市|
闻喜县|
阿巴嘎旗|
定州市|
靖远县|
东乌珠穆沁旗|
石台县|
丘北县|
綦江县|
唐海县|
龙泉市|
沈阳市|
林周县|