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

首頁 > 學院 > 開發設計 > 正文

正則表達式

2019-11-14 13:54:38
字體:
來源:轉載
供稿:網友

(轉)

大家好:

 

正則表達式是一個比較古老的技術了,現在應用卻越來越廣泛,尤其在 Web 前端的開發中,處理的對象主要是字符串格式,在前端庫中,你可以看到各種正則表達式,如果不認識的話,還是比較痛苦的。特別是現在的高級編輯器,都提供了使用正則表達式的搜索功能,會寫正則表達式,會讓你的生活更美好。

 

傳說正則表達式是一個從研究神經病學轉過來的程序員研發的技術,我感覺很像中國傳統道士畫出的驅鬼符,看不懂的時候,特別神秘,懂了的話,就會符到妖除。

這一次,我們先看正則表達式的兩個基本概念。

 

首先,正則表達式是關于文本的技術,可以幫助我們在文本中搜索特定的內容。

比如,在 Visual Studio 的文本編輯器中,就可以直接使用正則表達式進行高級搜索。下面的練習,你可以直接在 Visual Studio 的文本編輯器中完成。

 

第二部分

 

第一個概念  元字符

 

在搜索文本的時候,我們必須先描述一下搜索的目標,比如記事本就支持將搜索的內容完全寫出來,比如搜索 hello 這個詞,在正則表達式中,每個搜索的目標是使用多個元字符來表示的,比如,在 ‘hello’ 這個詞中,就有 5 個字面的元字符。這些字符直接表示我們搜索的目標,是直接寫出來的,我們一般稱為字面量。

 

能夠逐個字符直接描述出我們的搜索目標當然好了,但是,很多時候,我們很難直接寫出來,比如只記得 hello 的前兩個字母了,我們要找這個詞怎么辦?

可以使用通配符來描述,每個通配符可以表示一個字符,在正則表達式中,英文的圓點 (.) 表示任意一個除了換行符之外的字符,如果我們知道這個單詞共有 5 個字符,就可以寫成 he… 了。如果要表示的字符就是圓點怎么辦呢?在正則表達式中,需要使用反斜杠進行轉義,所有,寫出來就是  /. 了,因此,正則表達式應該是 he/././. 。

 

圓點 (.) 可以匹配除了換行的任意字符,那么,he*** 也可以被匹配,而我們的目標必須是字符,還可以使用更為特殊的元字符來嚴格限制一下,/w 可以匹配任何一個字母、數字或者下劃線。所以,我們可以寫成 he/w/w/w, 注意,一個元字符只能匹配一個字符,所以要寫三遍。這樣 he*** 就不會過來搗亂了。

 

常用的元字符有 7 個

.

匹配除換行符以外的任意字符

/w

匹配字母或數字或下劃線或漢字

/s

匹配任意的空白符

/d

匹配數字

/W

匹配任意不是字母,數字,下劃線,漢字的字符

/S

匹配任意不是空白符的字符

/D

匹配任意非數字的字符

 

看到了,元字符改變大小寫,意義正好相反,小寫字符表示范圍,大寫表示不在范圍,很好記。

 

自定義字符范圍

 

但是 he123 還是可以被匹配的,能不能再進一步限制到英文字母呢?當然可以,只不過沒有預定義好的元字符了,需要我們自己來描述一下可選的范圍。

使用 [] 可以明確指出我們備選的字符,列在中括號中的字符就是備選字符,比如,限制為英文小寫字符,可以把小寫字符全列出來,[abcdefghijklmnopqrstuvwxyz],這個表達式就可以表示從 a 到 z 之間的任何一個字符,不會出現數字了。

那么,我們的正則表達式可以寫成  he[abcdefghijklmnopqrstuvwxyz] [abcdefghijklmnopqrstuvwxyz] [abcdefghijklmnopqrstuvwxyz],你是不是已經暈掉了,我還不夠麻煩的。

為了減輕你的負擔,在 [] 中允許使用連字符來設置范圍,比如 [a-z] 就可以表示剛才的從 a 到 z 的所有小寫英文字符了。從 0 到 9 的數字就可以寫成 [0-9] 了。注意,寫成 [9-0] 可不行,有方向的。

這樣,我們可以使用正則表達式  he[a-z][a-z][a-z] 來搜索 he 開頭的 5 個字符組成的目標。感覺好一點了吧。

 

邊界字符

 

要是遇到了 heabcdefg 會發生什么呢?我們還是會匹配上其中的 heabc 的,但這并不是一個 5 個字符組成的單詞,所以,我們還需要表示一下,在我們的 5 個元字符之后,不能是其他的普通字符了,應該是類似空格、制表、換行之類的分隔符,或者,進一步說,是遇到了空格、制表、回車之類的符號就完成,但是,我們不需要匹配這個空格、制表、回車符號。

在正則表達式中,我們稱之為邊界,邊界是一個特殊的位置,比如開頭,結尾的位置,或者單詞開始結束的位置,位置并不是普通意義上的字符。所以,肯定需要用特殊的方式來表示一下了。

 

常用的位置有 4 個。

/b

匹配單詞的開始或結束

^

匹配字符串的開始

$

匹配字符串的結束

/B

匹配不是單詞開頭或結束的位置

 

/b 就表示單詞的邊界,比如說逗號 (,) 句號 (.) 空格等等,我們可以重新寫成 /bhe[a-z][a-z][a-z]/b,這樣就表示一個 5 個字符組成,開頭為 he 的單詞了。

 

第二個概念,也是這次的最后一個,數量詞

 

現在,我們的表達式/bhe[a-z][a-z][a-z]/b 還是比較繁瑣,應該簡化什么呢?當然是寫了三遍的 [a-z] 了,這個單詞只有 5 個字符,聽說過 i18n 問題嗎?國際化的英文單詞長度是 18 個字符,連老外都直接寫成 i18n 了,要是也寫成我們這樣的正則,還不累死。數量詞就是解決這個問題的。

 

如果你嫌重復寫多編麻煩,可以使用 * ,它表示把緊接著它前面的元字符重復多遍,這個 n 可以從 0 直到 n,如果我們的正則寫成 /bhe[a-z]*/b,它就表示 一個至少有兩個字符,以 he 開頭的單詞了,你看,最少的情況下,可以匹配 he 這個詞,healthy 也可以匹配。

 

如果不想匹配 he 這個詞,希望 [a-z] 至少匹配一個字符,可以使用加號 (+),與星號 (*) 的區別是,這個 n 是從 1 到 n 的。

如果只希望匹配 0 次或者 1 次,可以使用問號 (?),這個 n 從 0 到 1。

 

慢著,說了半天,都不是我們要的,我需要的是重復 3 遍,必須是 3 遍,不能多,也不能少,那你可以使用 {n} ,這個 n 你可以直接設置,現在可以寫成 /bhe[a-z]{3}/b了。是不是很爽了。

還可以指定至少幾次,或者重復 n 到 m 次。

 

常用的數量詞

代碼/語法

說明

*

重復零次或更多次

+

重復一次或更多次

?

重復零次或一次

{n}

重復n次

{n,}

重復n次或更多次

{n,m}

重復n到m次

 

 

總結一下

這里介紹了正則表達式的用途,基本的元字符和數量詞用法。

不過這都是非?;镜挠梅?,以后我們慢慢介紹高級用法,如果你著急的話,可以先看一篇文章《正則表達式 30 分鐘入門教程》。

 

對于開發人員來說,還可以安裝 RegexBuddy 這個工具,里面集成了學習,創建,測試正則表達式的各種功能,程序員的神器呀。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久一区探花| 欧美成人精品一区| 国模叶桐国产精品一区| 国产97人人超碰caoprom| 国产精品亚洲аv天堂网| 国产欧美婷婷中文| 亚洲国产美女精品久久久久∴| 精品亚洲aⅴ在线观看| 亚洲精品资源在线| 国产一区二区三区在线观看网站| 欧美日韩国产一中文字不卡| 国产日韩在线免费| 国产精品男人爽免费视频1| 亚洲精品乱码久久久久久按摩观| 中文一区二区视频| 日韩精品亚洲精品| 欧美老少做受xxxx高潮| 国产精品精品久久久| 精品国产91久久久| 亚洲国产精品国自产拍av秋霞| 亚洲国产精品网站| 日韩风俗一区 二区| 热99精品里视频精品| 另类专区欧美制服同性| 国产亚洲福利一区| 欧美有码在线观看视频| 高清日韩电视剧大全免费播放在线观看| 欧美成人三级视频网站| 精品亚洲夜色av98在线观看| 欧美在线欧美在线| 成人午夜一级二级三级| 欧美乱大交做爰xxxⅹ性3| 亚洲国产精品大全| 中国china体内裑精亚洲片| 日韩不卡在线观看| 国产精品av在线播放| 4444欧美成人kkkk| 亚洲毛茸茸少妇高潮呻吟| 欧美色欧美亚洲高清在线视频| 中文在线不卡视频| 美日韩在线视频| 欧美一级高清免费| 懂色aⅴ精品一区二区三区蜜月| 欧美亚洲另类制服自拍| 伊人亚洲福利一区二区三区| 性金发美女69hd大尺寸| 亚洲a成v人在线观看| 欧美电影第一页| 国产精品黄色av| 国产亚洲欧美日韩精品| 日本欧美中文字幕| 国产日韩欧美另类| 亚洲一级片在线看| 国产69久久精品成人| 欧美专区第一页| 欧美日韩国产区| 国产日产久久高清欧美一区| 奇米四色中文综合久久| 日韩美女激情视频| 成人国产精品久久久| 久久久亚洲影院你懂的| 亚洲欧美一区二区三区四区| 性欧美办公室18xxxxhd| 91亚洲精品视频| 国产女同一区二区| 日韩在线视频国产| 国产手机视频精品| 国产精品福利在线观看网址| 中文字幕精品av| 亚洲女人天堂视频| 一区二区福利视频| 日韩欧美国产骚| 69**夜色精品国产69乱| 亚洲成av人片在线观看香蕉| 国产成人精品久久久| 一区二区三区日韩在线| 国产伦精品免费视频| 美日韩丰满少妇在线观看| 欧美激情视频免费观看| 欧美视频在线观看免费| 欧美亚洲一区在线| 中文精品99久久国产香蕉| 国产精品影片在线观看| 91高清免费视频| www国产精品com| 91精品国产91久久久久久最新| 亚洲香蕉av在线一区二区三区| 欧美性猛交xxxx| 欧美性猛交视频| 欧美电影《睫毛膏》| 欧美中文字幕精品| 国产成人综合精品在线| 国产精品www网站| 在线观看精品国产视频| 伊人久久久久久久久久久| 亚洲综合视频1区| 国产成人精品国内自产拍免费看| 日韩电影中文 亚洲精品乱码| 国产丝袜精品第一页| 亚洲国产精品人人爽夜夜爽| 欧美亚洲第一区| 欧美巨猛xxxx猛交黑人97人| 中文字幕亚洲一区二区三区五十路| 精品国产一区二区三区在线观看| 亚洲国产日韩欧美综合久久| 欧美成年人视频网站| 久久精品色欧美aⅴ一区二区| 伊人亚洲福利一区二区三区| 在线观看不卡av| 九九视频这里只有精品| 亚洲影院色在线观看免费| 国产精品96久久久久久| 成人国产精品久久久久久亚洲| 国产精品久久久久国产a级| 91国产精品视频在线| 成人在线小视频| 亚洲精品国产综合区久久久久久久| 久久免费精品日本久久中文字幕| 久久精品99久久香蕉国产色戒| 成人xxxxx| 国产日韩精品在线观看| 国语自产精品视频在线看| 中文字幕精品在线| 国产成人精品一区二区| 久久久久亚洲精品成人网小说| 国产精品人人做人人爽| 久久久www成人免费精品张筱雨| 中文国产成人精品久久一| 最近2019年手机中文字幕| 久久色免费在线视频| 精品久久久免费| 亚洲精品videossex少妇| 国产精品一二区| 久久夜精品va视频免费观看| 日韩av日韩在线观看| 亚洲欧美另类自拍| 中文字幕亚洲第一| 国产精品中文字幕在线观看| 久久中文字幕国产| 欧美成年人在线观看| 91亚洲va在线va天堂va国| 欧美裸体男粗大视频在线观看| 日本精品久久中文字幕佐佐木| 亚洲精品久久久久中文字幕二区| 久久久国产成人精品| 国产日韩欧美影视| 欧美激情三级免费| 亚洲国产精品小视频| 伊人男人综合视频网| 欧美激情精品久久久久久大尺度| 欧美性猛交xxxx免费看| 亚洲小视频在线| 欧洲午夜精品久久久| 粗暴蹂躏中文一区二区三区| 欧美成人免费全部观看天天性色| 亚洲视频在线视频| 91亚洲国产成人久久精品网站| 欧美激情精品久久久久久大尺度| 91成品人片a无限观看| 亚洲第一精品夜夜躁人人躁| 久久久久五月天| 欧美性理论片在线观看片免费| 精品国产91久久久久久老师| 国产一区红桃视频|