校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 正則表達(dá)式學(xué)習(xí)參考 正則入門學(xué)習(xí)資料

正則表達(dá)式學(xué)習(xí)參考 正則入門學(xué)習(xí)資料

熱門標(biāo)簽:山東外呼系統(tǒng)聯(lián)系方式 浙江營銷外呼系統(tǒng)有哪些 哈爾濱公司外呼系統(tǒng)代理 惠安地圖標(biāo)注 自己做的電銷機(jī)器人 淄博市張店區(qū)地圖標(biāo)注 上海銷售電銷機(jī)器人軟件 地圖標(biāo)注店鋪地圖標(biāo)注酒店 遼寧秒客來電話機(jī)器人
1 概述
正則表達(dá)式(Regular Expression)是一種匹配模式,描述的是一串文本的特征。

正如自然語言中“高大”、“堅固”等詞語抽象出來描述事物特征一樣,正則表達(dá)式就是字符的高度抽象,用來描述字符串的特征。

正則表達(dá)式(以下簡稱正則,Regex)通常不獨立存在,各種編程語言和工具作為宿主語言提供對正則的支持,并根據(jù)自身語言的特點,進(jìn)行一定的剪裁或擴(kuò)展。

正則入門很容易,有限的語法規(guī)則很容易掌握,但是目前正則的普及率并不高,主要是因為正則的流派眾多,各種宿主語言提供的文檔都過多的關(guān)注于自身的一些細(xì)節(jié),而這些細(xì)節(jié)通常是初學(xué)者并不需要關(guān)注的。

當(dāng)然,如果想要深入的了解正則表達(dá)式,這些細(xì)節(jié)又是必須被關(guān)注的,這是后話,讓我們先從正則的基礎(chǔ)開始,進(jìn)入正則表達(dá)式的世界。

2 正則表達(dá)式基礎(chǔ)
2.1 基本概念
2.1.1 字符串組成

對于字符串“a5”,是由兩個字符“a”、“5”以及三個位置組成的,這一點對于正則表達(dá)式的匹配原理理解很重要。

2.1.2  占有字符和零寬度

正則表達(dá)式匹配過程中,如果子表達(dá)式匹配到的是字符內(nèi)容,而非位置,并被保存到最終的匹配結(jié)果中,那么就認(rèn)為這個子表達(dá)式是占有字符的;如果子表達(dá)式匹配的僅僅是位置,或者匹配的內(nèi)容并不保存到最終的匹配結(jié)果中,那么就認(rèn)為這個子表達(dá)式是零寬度的。

占有字符還是零寬度,是針對匹配的內(nèi)容是否保存到最終的匹配結(jié)果中而言的。

占有字符是互斥的,零寬度是非互斥的。也就是一個字符,同一時間只能由一個子表達(dá)式匹配,而一個位置,卻可以同時由多個零寬度的子表達(dá)式匹配。

2.1.3  正則表達(dá)式構(gòu)成

正則表達(dá)式由兩種字符構(gòu)成。一種是在正則表達(dá)式中具體特殊意義的“元字符”,另一種是普通的“文本字符”。

元字符可以是一個字符,如“^”,也可以是一個字符序列,如“\w”。

2.2     元字符(Meta Character

2.2.1  [] 字符組(Character Classes)

字符組可以匹配[ ]中包含的任意一個字符。雖然可以是任意一個,但只能是一個。

字符組支持由連字符“-”來表示一個范圍。當(dāng)“-”前后構(gòu)成范圍時,要求前面字符的碼位小于后面字符的碼位。

[^] 排除型字符組。排除型字符組表示任意一個未列出的字符,同樣只能是一個。排除型字符組同樣支持由連字符“-”來表示一個范圍。

表達(dá)式

說明

[abc]

表示“a”或“b”或“c

[0-9]

表示0~9中任意一個數(shù)字,等價于[0123456789]

[\u4e00-\u9fa5]

表示任意一個漢字

[^a1]

表示除“a”、“1”、“”外的其它任意一個字符

[^a-z]

表示除小寫字母外的任意一個字符

舉例:

[0-9][0-9]”在匹配“Windows 2003”時,匹配成功,匹配的結(jié)果為“20”。

[^inW]”在匹配“Windows 2003”時,匹配成功,匹配的結(jié)果為“d”。

2.2.2  常見字符范圍縮寫

對于一些常用的字符范圍,如數(shù)字等,由于非常常用,即使使用[0-9]這樣的字符組仍顯得麻煩,所以定義了一些元字符,來表示常見的字符范圍。

表達(dá)式

說明

\d

任意一個數(shù)字,相當(dāng)于[0-9],即0~9 中的任意一個

\w

任意一個字母或數(shù)字或下劃線,相當(dāng)于[a-zA-Z0-9_]

\s

任意空白字符,相當(dāng)于[ \r\n\f\t\v]

\D

任意一個非數(shù)字字符,\d取反,相當(dāng)于[^0-9]

\W

\w取反,相當(dāng)于[^a-zA-Z0-9_]

\S

任意非空白字符,\s取反,相當(dāng)于[^ \r\n\f\t\v]

舉例:

\w\s\d”在匹配“Windows 2003”時,匹配成功,匹配的結(jié)果為“s 2”。

2.2.3  . 小數(shù)點

小數(shù)點可以匹配除“\n”以外的任意一個字符。如果要匹配包括“\n”在內(nèi)的所有字符,一般用[\s\S],或者是用“.”加(?s)匹配模式來實現(xiàn)。

表達(dá)式

說明

.

匹配除了換行符 \n 以外的任意一個字符

2.2.4  其它元字符

表達(dá)式

說明

^

匹配字符串開始的位置,不匹配任何字符

$

匹配字符串結(jié)束的位置,不匹配任何字符

\b

匹配單詞邊界,不匹配任何字符

舉例:

^a”在匹配“cba”時,匹配失敗,因為表達(dá)式要求開始位置后面是字符“a”,而“cba”顯然是不滿足的。

\d$”在匹配“123”時,匹配成功,匹配結(jié)果為“3”,這個表達(dá)式要求匹配結(jié)尾處的數(shù)字,如果結(jié)尾處不是數(shù)字,如“123abc”,則是匹配失敗的。

2.2.5  轉(zhuǎn)義字符

一些不可見字符,或是在正則中具有特殊意義的元字符,如想匹配字符本身,需要用“\”對其進(jìn)行轉(zhuǎn)義。

 

表達(dá)式

說明

\r\n

回車和換行

\\

匹配“\”本身

\^,\$,\.

分別匹配“^”、“$”和“.

以下字符在匹配其本身時,通常需要進(jìn)行轉(zhuǎn)義。在實際應(yīng)用中,根據(jù)具體情況,需要轉(zhuǎn)義的字符可能不止如下所列字符

 .  $  ^  {  [  (  |  )  *  +  ?  \

2.2.6  量詞(Quantifier

量詞表示一個子表達(dá)式可以匹配的次數(shù)。量詞可以用來修飾一個字符、字符組,或是用()括起來的子表達(dá)式。一些常用的量詞被定義成獨立的元字符。

表達(dá)式

說明

舉例

{m}

表達(dá)式匹配m

\d{3}”相當(dāng)于“\d\d\d

(abc){2}”相當(dāng)于“abcabc

{m,n}

表達(dá)式匹配最少m次,最多n

\d{2,3}”可以匹配“12”或“321”等23位的數(shù)字

{m,}

表達(dá)式至少匹配m

[a-z]{8,}”表示至少8位以上的字母

?

表達(dá)式匹配0次或1次,相當(dāng)于{0,1}

ab?”可以匹配“a”或“ab

*

表達(dá)式匹配0次或任意多次,相當(dāng)于{0,}

[^>]*>”中“[^>]*”表示0個或任意多個不是“>”的字符

+

表達(dá)式匹配1次或意多次,至少1次,相當(dāng)于{1,}

\d\s+\d”表示兩個數(shù)字中間,至少有一個以上的空白字符

注意:在不是動態(tài)生成的正則表達(dá)式中,不要出現(xiàn)“{1}”這樣的量詞,如“\w{1}”在結(jié)果上等價于“\w”,但是會降低匹配效率和可讀性,屬于畫蛇添足的做法。

2.2.7  分支結(jié)構(gòu)(Alternation

當(dāng)一個字符串的某一子串具有多種可能時,采用分支結(jié)構(gòu)來匹配,“|”表示多個子表達(dá)式之間“或”的關(guān)系,“|”是以()限定范圍的,如果在“|”的左右兩側(cè)沒有()來限定范圍,那么它的作用范圍即為“|”左右兩側(cè)整體。

表達(dá)式

說明

|

多個子表達(dá)式之間取“或”的關(guān)系

舉例:

^aa|b$”在匹配“cccb”時,是可以匹配成功的,匹配的結(jié)果是“b”,因為這個表達(dá)式表示匹配“^aa”或“b$”,而“b$”在匹配“cccb ”時是可以匹配成功的。

^(aa|b)$”在區(qū)配“cccb”時,是匹配失敗的,因為這個表達(dá)式表示在“開始”和“結(jié)束”位置之間只能是“aa”或“b”,而“cccb”顯然是不滿足的。

3       正則表達(dá)式進(jìn)階

3.1     捕獲組(Capture Group

捕獲組就是把正則表達(dá)式中子表達(dá)式匹配的內(nèi)容,保存到內(nèi)存中以數(shù)字編號或手動命名的組里,以供后面引用。

表達(dá)式

說明

(Expression)

普通捕獲組,將子表達(dá)式Expression匹配的內(nèi)容保存到以數(shù)字編號的組里

(?name> Expression)

命名捕獲組,將子表達(dá)式Expression匹配的內(nèi)容保存到以name命名的組里

普通捕獲組(在不產(chǎn)生歧義的情況下,簡稱捕獲組)是以數(shù)字進(jìn)行編號的,編號規(guī)則是以“(”從左到右出現(xiàn)的順序,從1開始進(jìn)行編號。通常情況下,編號為0的組表示整個表達(dá)式匹配的內(nèi)容。

命名捕獲組可以通過捕獲組名,而不是序號對捕獲內(nèi)容進(jìn)行引用,提供了更便捷的引用方式,不用關(guān)注捕獲組的序號,也不用擔(dān)心表達(dá)式部分變更會導(dǎo)致引用錯誤的捕獲組。

3.2     非捕獲組

一些表達(dá)式中,不得不使用( ),但又不需要保存( )中子表達(dá)式匹配的內(nèi)容,這時可以用非捕獲組來抵消使用( )帶來的副作用。

表達(dá)式

說明

(?:Expression)

進(jìn)行子表達(dá)式Expression的匹配,并將匹配內(nèi)容保存到最終的整個表達(dá)式的區(qū)配結(jié)果中,但Expression匹配的內(nèi)容不單獨保存到一個組內(nèi)

3.3     反向引用

捕獲組匹配的內(nèi)容,可以在正則表達(dá)式的外部程序中進(jìn)行引用,也可以在表達(dá)式中進(jìn)行引用,表達(dá)式中引用的方式就是反向引用。

反向引用通常用來查找重復(fù)的子串,或是限定某一子串成對出現(xiàn)。

表達(dá)式

說明

\1\2

對序號為12的捕獲組的反向引用

\kname>

對命名為name的捕獲組的反向引用

舉例:

(a|b)\1”在匹配“abaa”時,匹配成功,匹配到的結(jié)果是“aa”?!?/SPAN>(a|b)”在嘗試匹配時,雖然既可以匹配“a”,也可以匹配“b”,但是在進(jìn)行反向引用時,對應(yīng)()中匹配的內(nèi)容已經(jīng)是固定的了。

3.4     環(huán)視(Look Around

環(huán)視只進(jìn)行子表達(dá)式的匹配,匹配內(nèi)容不計入最終的匹配結(jié)果,是零寬度的。

環(huán)視按照方向劃分有順序和逆序兩種,按照是否匹配有肯定和否定兩種,組合起來就有四種環(huán)視。環(huán)視相當(dāng)于對所在位置加了一個附加條件。

 

表達(dá)式

說明

(?=Expression)

逆序肯定環(huán)視,表示所在位置左側(cè)能夠匹配Expression

(?!Expression)

逆序否定環(huán)視,表示所在位置左側(cè)不能匹配Expression

(?=Expression)

順序肯定環(huán)視,表示所在位置右側(cè)能夠匹配Expression

(?!Expression)

順序否定環(huán)視,表示所在位置右側(cè)不能匹配Expression

舉例:

(?=Windows )\d+”在匹配“Windows 2003”時,匹配成功,匹配結(jié)果為“2003”。我們知道“\d+”表示匹配一個以上的數(shù)字,而“(?=Windows )”相當(dāng)于一個附加條件,表示所在位置左側(cè)必須為“Windows ”,它所匹配的內(nèi)容并不計入匹配結(jié)果。同樣的正則在匹配“Office 2003”時,匹配失敗,因為這里任意一串?dāng)?shù)字子串的左側(cè)都不是“Windows ”。

(?!1)\d+”在匹配“123”時,匹配成功,匹配的結(jié)果為“23”。“\d+”匹配一個以上數(shù)字,但是附加條件“(?!1)”要求所在位置右側(cè)不能是“1”,所以匹配成功的位置是“2”前面的位置。

3.5     忽略優(yōu)先和匹配優(yōu)先

或者叫做正則表達(dá)式匹配的貪婪與非貪婪模式。

標(biāo)準(zhǔn)量詞修飾的子表達(dá)式,在可匹配可不匹配的情況下,總會先嘗試進(jìn)行匹配,稱這種方式為匹配優(yōu)先,或者貪婪模式。此前介紹的一些量詞,“{m}”、“{m,n}”、“{m,}”、“?”、“*”和“+”都是匹配優(yōu)先的。

一些NFA正則引擎支持忽略優(yōu)先量詞,也就是在標(biāo)準(zhǔn)量詞后加一個“?”,此時,在可匹配可不匹配的情況下,總會先忽略匹配,只有在由忽略優(yōu)先量詞修飾的子表達(dá)式,必須進(jìn)行匹配才能使整個表達(dá)式匹配成功時,才會進(jìn)行匹配,稱這種方式為忽略優(yōu)先,或者非貪婪模式。忽略優(yōu)先量詞包括“{m}?”、“{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。

舉例:

源字符串:div>aaa/div>div>bbb/div>

正則表達(dá)式1div>.*/div>      匹配結(jié)果:div>aaa/div>div>bbb/div>

正則表達(dá)式2div>.*?/div>     匹配結(jié)果:div>aaa/div>

標(biāo)簽:銅川 泰州 宣城 無錫 綿陽 長沙 西安 重慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《正則表達(dá)式學(xué)習(xí)參考 正則入門學(xué)習(xí)資料》,本文關(guān)鍵詞  正則,表達(dá)式,學(xué)習(xí),參考,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《正則表達(dá)式學(xué)習(xí)參考 正則入門學(xué)習(xí)資料》相關(guān)的同類信息!
  • 本頁收集關(guān)于正則表達(dá)式學(xué)習(xí)參考 正則入門學(xué)習(xí)資料的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    中文文精品字幕一区二区| 亚洲激情男女视频| 亚洲国产三级在线| 5858s免费视频成人| 免费成人av在线| 精品久久人人做人人爱| 国产成人在线色| 亚洲精品v日韩精品| 欧美一区二区三级| 成人性生交大片免费看视频在线| 国产精品久久一级| 色域天天综合网| 久久黄色级2电影| 日本一区二区电影| 7777女厕盗摄久久久| 懂色av中文一区二区三区| 一区二区三区 在线观看视频| 日韩一二在线观看| 97aⅴ精品视频一二三区| 亚洲一区二区精品视频| 久久久久国产一区二区三区四区 | 亚洲成人av福利| 久久久久久黄色| 精品视频一区二区不卡| 国产在线国偷精品免费看| 欧美国产日本视频| 成人晚上爱看视频| 天天影视涩香欲综合网 | 欧美精品久久一区二区三区| 国产不卡视频一区二区三区| 亚洲第一成年网| 中文字幕在线不卡一区二区三区| 日韩欧美国产wwwww| 在线免费不卡电影| 91在线观看美女| 丰满少妇久久久久久久| 捆绑调教美女网站视频一区| 夜夜嗨av一区二区三区网页| 欧美国产日韩在线观看| 精品国产污网站| 精品福利一区二区三区免费视频| 韩国中文字幕2020精品| 日本一区二区视频在线| 欧美性高清videossexo| 国产成人精品免费一区二区| 亚洲一区在线观看免费观看电影高清 | 一区二区三区欧美日| 日韩欧美国产综合| 91精品国产91久久久久久最新毛片 | 日韩精品一区在线观看| 在线观看免费成人| 91女厕偷拍女厕偷拍高清| 天天综合网 天天综合色| 91精品一区二区三区在线观看| 国产高清成人在线| 久久精品国产成人一区二区三区 | 欧美经典一区二区三区| 3d动漫精品啪啪一区二区竹菊| 91碰在线视频| 99精品桃花视频在线观看| 懂色av中文一区二区三区| 国产91综合网| 成人国产精品视频| 成人午夜激情在线| 久久99精品国产91久久来源| 色呦呦网站一区| 国产乱码一区二区三区| 久久99久久99| 激情文学综合丁香| 国内精品伊人久久久久av影院| 日本中文在线一区| 图片区小说区区亚洲影院| 亚洲成人黄色小说| 图片区小说区国产精品视频| 亚洲成人激情自拍| 久久爱www久久做| 国产精品66部| 91在线小视频| 91成人在线精品| 欧美老肥妇做.爰bbww视频| 欧美高清一级片在线| 精品系列免费在线观看| 久久久久久夜精品精品免费| 制服丝袜日韩国产| 4438成人网| 精品少妇一区二区三区日产乱码 | 日韩高清不卡一区| 精品一区二区三区免费观看| 91精品福利在线一区二区三区 | 欧美国产日本韩| 国产精品国产馆在线真实露脸 | 日韩三级免费观看| 国产精品拍天天在线| 一区二区三区在线观看国产| 日本成人在线不卡视频| 国产精品香蕉一区二区三区| av不卡免费电影| 91精品国产色综合久久不卡蜜臀| 欧美不卡123| 亚洲日本在线天堂| 韩国女主播成人在线观看| 99久久婷婷国产综合精品电影| 欧美男人的天堂一二区| 国产精品丝袜黑色高跟| 麻豆国产精品777777在线| 成人性生交大片免费| 欧美一区二区三区四区高清| 亚洲欧美在线视频| 国产一区二区在线观看免费| 欧美日韩一级片在线观看| 国产精品看片你懂得| 另类小说图片综合网| 91污片在线观看| 337p日本欧洲亚洲大胆精品| 天涯成人国产亚洲精品一区av| 99久久久久久| 欧美国产在线观看| 麻豆免费精品视频| 精品视频色一区| 亚洲日本电影在线| 成人黄色片在线观看| 欧美va亚洲va| 人人精品人人爱| 在线免费亚洲电影| 亚洲男人的天堂一区二区| 国产成人亚洲精品狼色在线| 日韩精品一区二区三区在线播放| 亚洲图片欧美视频| 在线国产亚洲欧美| 夜夜夜精品看看| 成人av电影观看| 欧美精彩视频一区二区三区| 国产一区二区看久久| 精品少妇一区二区| 国产自产v一区二区三区c| 日韩精品一区二区三区三区免费 | 337p粉嫩大胆噜噜噜噜噜91av | 成人免费看视频| 欧美激情综合网| 亚洲毛片av在线| 精品粉嫩aⅴ一区二区三区四区 | 99久久精品费精品国产一区二区| 欧美一区二区免费视频| 亚洲成人免费影院| 日日噜噜夜夜狠狠视频欧美人 | 一区二区三区国产| 欧美性极品少妇| 偷拍一区二区三区| 欧美精品电影在线播放| 欧美色老头old∨ideo| 欧美精品一区二区三区蜜桃| 蜜乳av一区二区三区| 精品日韩99亚洲| 国产精品一线二线三线| 国产精品久久久久影院老司| zzijzzij亚洲日本少妇熟睡| 亚洲国产精品二十页| 99久久精品国产精品久久| 亚洲男女毛片无遮挡| 日本精品一区二区三区四区的功能| 亚洲欧美电影院| 在线综合视频播放| 久久99国产乱子伦精品免费| 久久久久88色偷偷免费| www.亚洲色图| 午夜国产精品一区| 久久在线观看免费| 色噜噜狠狠色综合中国| 美女视频免费一区| 综合久久国产九一剧情麻豆| 欧美精品v日韩精品v韩国精品v| 极品销魂美女一区二区三区| 国产精品国产馆在线真实露脸 | 麻豆国产欧美日韩综合精品二区| 久久午夜羞羞影院免费观看| 色综合天天做天天爱| 美女网站色91| 亚洲欧美日韩成人高清在线一区| 4438x亚洲最大成人网| 成人高清av在线| 日本不卡一区二区三区高清视频| 国产亚洲精品资源在线26u| 色欧美88888久久久久久影院| 毛片一区二区三区| 亚洲一二三四久久| 久久久精品国产99久久精品芒果| 欧日韩精品视频| 国产成人精品亚洲日本在线桃色| 亚洲五码中文字幕| 欧美精品aⅴ在线视频| 92国产精品观看| 国产不卡在线播放| 美日韩一区二区| 亚洲自拍偷拍欧美| 国产精品乱人伦中文| www精品美女久久久tv| 欧美一区二区视频在线观看 | 精品国产免费久久 | 亚洲永久免费视频| 亚洲日本成人在线观看|