亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

深入理解正則表達式語法知識

2020-03-16 20:58:13
字體:
來源:轉載
供稿:網友

4.選擇與分組

正則表達式語法

(1).分組

字符組[]:表示匹配若干個字符之一

字符組可以淺顯的理解為一些字符的組合,字符組與普通字符的區別在于:abc普通字符表示匹配a接下來b接下來c而字符組[abc]表示在同一位置匹配a或者b或者c;由于字符組本身的含義也決定了可以將這個字符組看成是一個普通的特殊字符。

普通性:普通是因為它也表示在一個位置上匹配一個字符對單個字符的操作在其上面也是可以起作用的;如:[a-z]{6};

特殊性:特殊是因為,1.其他字符在其內外的含義可能不同如:-,.,^等,2.在同一個位置可以有多中選擇,但這種選擇也只是限于一個字符;

各個字符在字符組內外的區別:

-:在字符組內部,表示一個范圍;在字符組外僅僅表示是一個字符;

例子:

-在字符組外

<script type="text/javascript">var str = '2016-8-20';var reg = /16-8/g;console.log(str.match(reg)); //16-8</script>

-在字符組內

<script type="text/javascript">var str = '2016-8-20';reg = /1[6-8]/g;console.log(str.match(reg)); //16 </script>

-在字符組外是一個普通字符只表示-這個字符本身,所以匹配的是1接下來是6接下來是-接下來是8的這段字符串;所以是16-8

-在字符組內表示的是一個范圍,所以匹配的是1接下來是6到8之間的任意數字的字符所以是16;

.:在字符組內部表示一個點;在字符組外部表示任意字符(查找單個字符,除了換行和行結束符)。

.在字符組外

<script type="text/javascript">var str = '2016-8-20';var reg = /6.8/g;console.log(str.match(reg)); //6-8</script>

.在字符組內

<script type="text/javascript">var str = '2016-8-20';var reg = /6[.]8/g;console.log(str.match(reg)); //null</script>

.在字符組外表示任意字符;所以匹配的是6接下來是任意一個字符接下來是8的一個字符串,所以匹配到的是6-8;

.在字符組內只是一個普通字符表示它本身;所以匹配的是6接下來是.接下來是8的一個字符串由于未匹配到所以為null;

對于字符組還可以分為匹配型字符組和排除型字符組主要是因為^的含義的變化

^: 脫字符;

例子:

^在字符組外

<script type="text/javascript">var str = 'han';var reg = /^ha/g;console.log(str.match(reg)); //ha</script>

^在字符組內

<script type="text/javascript">var str = 'han';var reg = /[^0-9]/g;console.log(str.match(reg)); // h,a,n</script>

脫字符在[]外部是一個錨點,表示匹配以某某字符開頭的字符或者字符串,在[]中有除了的意思

注意:[^a]表示匹配一個位置不等于a的字符,不要去理解成這個位置不是a就能匹配,后者的理解可以匹配一個空行,注意這個區別

例子:

<script type="text/javascript">var str = 'han';var reg = /n[^q]/g;console.log(str.match(reg)); //null</script>

注意:這個例子在n之后沒有任何字符,所以匹配的結果為空,如果按照上述的第二種理解可能就會認為匹配結果是:n

[]中不管有多少字符,在同一個位置只會匹配到其中的任意一個,如果說我要在一個位置上匹配一個字符串那又該如何呢?

(2).選擇

此時可以用()加|這個組合,|在正則表達式中是或者的意思,而()在正則表達式中劃分一個范圍;單獨的()使用時沒有意義的,只有當它和其他量詞共同使用才會體現出它的作用(先說下淺顯的例子,貪婪匹配和非貪婪匹配再單獨去說,這里先不作說明);

例子:

<script type="text/javascript">var str = '2016-8-20';var reg = /(16-8)/g;console.log(str.match(reg)); //16-8</script><script type="text/javascript">var str = '2016-8-20';var reg = /16-8/g;console.log(str.match(reg)); //16-8</script>

這個例子有沒有括號都一樣都表示匹配16-8這個字符串

當()和|一起使用則是一種多選結構,可以匹配任意子表達式()表示的是一個范圍;|表示的是一個選擇方向

例子:

<script type="text/javascript">var str = 'greygray';var reg = /gr[ea]y/g;console.log(str.match(reg)); // grey,grayreg = /gr(e|a)y/g;console.log(str.match(reg)); //grey,gray</script>

以上這兩種匹配的結果都是grey, gray也就是說(|)的分支選擇結構在一定程度上是可以和[]進行互相替代

例子:

<script type="text/javascript">var str = 'greygray';var reg = /gre|ay|yg/g;console.log(str.match(reg)); //gre,yg,ay</script>

輸出結果:gre,yg,ay

括號的添加與否對結果的影響很大如:

^hello | world | hi :匹配的是 ^hello 或者 world 或者 hi

^(hello | world | hi):.匹配的起始行是 ^hello 或者 ^world 或者 ^ hi

注意:多選結構雖然有時候可以用字符組來表示,他倆之間可以互相表示,但是一個字符組只能匹配目標文本中的單個字符,而每個多選結構自身都可能是完整的正則,都可以匹配任意長度的文本

在正則表達式中需要注意的幾點:

1.在正則表達式中,空格字符也被視作一個規則字符;

2.-;.;*等在[]內和[]外的含義并不相同注意區別;注意元字符在字符組內外的區別;

3.當對幾個字符添加[]之后該字符串就被視作一個字符組,而對單個字符操作的?*等也可以對其使用,量詞之間的混合使用和量詞與分組選擇之間的混合會有一個貪婪和非貪婪匹配的概念,對此會單獨拿出總結;

4.分支結構和字符組的區別;分支可以匹配任意長度的文本;字符組只能匹配一個字符;

5.注意一些概念的理解:比如:[^x]表示‘匹配一個不等于x的字符'而不是'只有當這個位置不是x才能匹配';[^x]后面的概念可以匹配一個空行在比如{x,y},?,*的理解;

6.在匹配中決定匹配是否成功的是{x,y}中的x,x對匹配成功與否起關鍵作用。

以上所述是小編給大家帶來了深入理解正則表達式語法知識的全部敘述,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的,再此頁非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到正則表達式頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美天天综合色影久久精品| 亚洲男人天堂视频| 91精品国产自产在线观看永久| 国产视频精品一区二区三区| 精品福利在线看| 8050国产精品久久久久久| 欧美日韩一区二区免费视频| 亚洲国产精品中文| 一本色道久久88综合日韩精品| 欧美一级在线亚洲天堂| 欧洲精品久久久| 国产亚洲欧美一区| 美日韩精品免费观看视频| 日韩美女在线观看| 亚洲激情在线观看| 国产精品免费一区二区三区都可以| 亚洲三级黄色在线观看| 中文字幕日韩欧美精品在线观看| 精品一区二区电影| 精品久久香蕉国产线看观看亚洲| 欧美超级免费视 在线| 色狠狠av一区二区三区香蕉蜜桃| 中文字幕亚洲第一| 国产主播精品在线| 久青草国产97香蕉在线视频| 韩国福利视频一区| 草民午夜欧美限制a级福利片| 黑人欧美xxxx| 日韩精品中文字幕在线| 成人性生交xxxxx网站| 理论片在线不卡免费观看| 亚洲激情视频在线| 国产日本欧美一区二区三区| 亚洲精品久久久久国产| 日韩av电影在线免费播放| 日本国产欧美一区二区三区| 亚洲最大av网站| 91av视频在线观看| 8090理伦午夜在线电影| 国产精品嫩草影院一区二区| 欧美日本亚洲视频| 午夜精品福利在线观看| 国产精品高潮粉嫩av| 精品久久久久人成| 成人欧美一区二区三区在线| 亚洲人免费视频| 亚洲欧洲偷拍精品| 久久久久国产精品免费| 亚洲电影天堂av| 欧美日韩美女在线| 国产精品偷伦视频免费观看国产| 欧美理论电影在线观看| 2019中文字幕在线免费观看| 日韩视频中文字幕| 九九精品视频在线观看| 国产日韩精品在线观看| 视频在线观看一区二区| 久久视频国产精品免费视频在线| 欧美黑人一级爽快片淫片高清| 久久亚洲精品国产亚洲老地址| 久久久久久噜噜噜久久久精品| 国产成人亚洲精品| 亚洲精品久久久久中文字幕欢迎你| 最新国产成人av网站网址麻豆| 日韩免费观看在线观看| 久久精品青青大伊人av| 最近的2019中文字幕免费一页| 国产欧美日韩精品专区| 日韩电影中文字幕av| xxx一区二区| 97色伦亚洲国产| 国产欧美一区二区三区在线| 九九热99久久久国产盗摄| 亚洲视频在线观看| 亚洲人成在线免费观看| 久久精品视频播放| 日本久久久久亚洲中字幕| 日韩av日韩在线观看| 日韩经典中文字幕| 日韩欧美在线播放| 中文字幕亚洲欧美一区二区三区| 91高潮在线观看| 国产精品电影久久久久电影网| 国产美女直播视频一区| 国产精品香蕉在线观看| 欧美另类69精品久久久久9999| 在线日韩日本国产亚洲| 国产精品18久久久久久麻辣| 国产亚洲欧洲黄色| 精品久久久999| 91在线国产电影| 超碰日本道色综合久久综合| 性欧美视频videos6一9| 亚洲毛片在线观看| 福利微拍一区二区| 18一19gay欧美视频网站| 少妇av一区二区三区| www.xxxx精品| 国产精品女人网站| 97碰在线观看| 欧美大尺度在线观看| 精品国产欧美一区二区三区成人| 亚洲一区二区三区在线视频| 555www成人网| 九九精品在线观看| 国产99在线|中文| 色妞一区二区三区| 亚洲欧美国产制服动漫| 91精品久久久久久久久中文字幕| 91亚洲精品一区| 精品亚洲一区二区| 国产欧美一区二区白浆黑人| 日本精品久久久久久久| 日本欧美黄网站| 欧美在线影院在线视频| 国产精品视频公开费视频| 97色在线视频| 免费91麻豆精品国产自产在线观看| 国产精品久久久久久久久久久久久| 狠狠躁夜夜躁人人爽超碰91| 国产精品电影久久久久电影网| 在线亚洲午夜片av大片| 欧美亚洲国产视频| 亚洲免费中文字幕| 日韩电影第一页| 国产精品电影观看| 亚洲精品小视频| 久久精品国产一区二区电影| www.欧美精品一二三区| 日韩中文字幕在线免费观看| 日本精品视频在线播放| 久久99热这里只有精品国产| 亚洲一区二区福利| 一区二区三区视频免费| 久久久精品国产亚洲| 久久视频国产精品免费视频在线| 亚洲人精选亚洲人成在线| 久久久久久av| 国产日韩欧美中文| 中文字幕日韩欧美精品在线观看| 91在线直播亚洲| 国产精品手机播放| 亚洲免费视频在线观看| 亚洲精品中文字| 美日韩精品免费观看视频| 97碰碰碰免费色视频| 国产香蕉一区二区三区在线视频| 亚洲日本成人网| 国产91免费看片| 日本久久久久久久久久久| 久久成人免费视频| 91夜夜揉人人捏人人添红杏| 成人高h视频在线| 国产精品久久久久国产a级| 97精品国产91久久久久久| 亚洲影院在线看| 成人有码在线播放| 久久综合免费视频影院| 狠狠躁18三区二区一区| 国产美女高潮久久白浆| 欧美性黄网官网| 国产精品毛片a∨一区二区三区|国| 欧美亚州一区二区三区| 日韩成人中文电影|