正規表示式詳細介紹

2021-07-09 13:20:38 字數 2015 閱讀 4725

單個表示:

-1 \d 數字

-2 \d 非數字

注:大小寫就是取反的意思

-3 \w 任意乙個字母或數字或下劃線

-4 \s 空白符(換行、製表符、空格)

-5 . 任意字元(除了換行符)

自定義字元集合:

表示匹配內的任意乙個字元,是乙個或運算,比如[123],就表示是數字1或數字2或數字3

[^]表示非運算,比如[^123],表示除了數字123的任意字元,包括空白符

[1-9],匹配數字1-9之間的任意乙個字元

[^1-9a-b],匹配數字1-9和字元a-b之外的任意乙個字元

注:在中,除了^和-以外的所有字元,都失去了特殊含義,比如.就是.,不是指任意字元了,當然\n這種還是代表換行

量詞:

-1 ,這裡的n是乙個數字,表示連續出現幾次,比如\d,表示連續匹配了6個數字,這個只與{}前乙個表示式有關,比如\d\d不是匹配12個數字,是表示匹配7個數字;如果想要表示12個數字,只需要加個(),(\d\d)即可

-2 ,m和n都是數字,表示[m,n],比如\d,匹配的是滿足連續3個-連續6個的數字的字串,這裡的匹配預設是貪婪模式,即先看有沒有6個的,有的話返回6個,以此類推,如果想要使用非貪婪模式,即優先匹配3個連續數字的字串,只需要在{}後加個?,\d?即可。

-3 ,m是數字,表示匹配滿足至少連續m次,但是沒有這樣的寫法

-4 ? 匹配次數時0次或者1次,相當於,a\db等同於a\d?b

-5 + 匹配次數至少1次

-6 * 匹配次數至少0次

字元邊界:

注:字元邊界都是零寬的,即不會匹配到符號,這裡匹配的是乙個位置,而非字元

-1 ^ 字串開始的位置 ^a表示字母a開頭的位置

-2 $ 字串結尾的位置 a$表示字母a結束的位置

-3 \b 匹配乙個單詞的邊界(左邊右邊不全是\w),換句話就是,出現非數字非字元非下劃線的符號就可以匹配了

舉個例子:

字串:test 90test test123

test\b的匹配結果是:test 90test test123,對test123的test來說,右邊出現了數字

\btest\b的匹配結果是:test 90test test123,因為90test的test,左邊是數字,test123的右邊是數字

選擇符和分組:

-1 | 表示或,匹配滿足左邊和右邊的字串,如\d|[a-z],表示匹配數字或者小寫字母

-2 ()表示捕獲組,將乙個表示式用()括起來,就可以將這個括號視作整體

-3 \ddd,這裡的ddd是數字,\ddd表示反向引用第幾個括號的內容,舉個例子:

[a-z]表示連續2個小寫字母,([a-z])\1表示將([a-z])匹配到的字串再重複一次做匹配,比如([a-z])匹配到ab,那麼([a-z])\1表示abab

([a-z])([a-z])匹配到的內容是abc,那麼([a-z])([a-z])\2則是abcc,([a-z])([a-z])\1\2則是abcabc, ([a-z])([a-z])\2\1則是abccab

總的來說,\ddd就是表示第幾個括號的位置,以左括號的位置為準,因為這裡捕獲組會儲存到記憶體,在大文字處理的時候可能會占用比較大的記憶體

-4 (?:) 非捕獲組,即不會儲存到記憶體,但是和()的返回結果相同,但是不能與反向引用相結合,因為不儲存結果

預搜尋(零寬斷言):

之所以所零寬,因為這部分匹配的都是位置

-1 (?=exp) 這裡exp是表示式, 整體表示斷言自身出現的位置的後面能匹配表示式exp,舉個例子

有如下字串:eating fighting doing,表示式 [a-z]+(?=ing)匹配的結果是eat fight do,ing不計入匹配結果

-2 (?!=exp) 和上面相似後面不等於exp

-3 (?<=exp) 斷言自身出現的位置的前面能匹配表示式exp

正規表示式和萬用字元詳細介紹

萬用字元是bash的操作環境中,為了增強 的處理資料能力而出現的哦,限定在shell中使用,也就是在別的語言環境中用不到喲,命令列中grep,ls,find用萬用字元即關鍵字查詢或其他操作。其中常用的萬用字元如下 符號意義 代表0 個任意字元 代表1個任意字元 代表1個括號內的字元 代表1個括號連續...

正規表示式介紹

一 前言 對於正規表示式,相信很多人都知道,但是很多人的第一感覺就是難學,因為看第一眼時,覺得完全沒有規律可尋,而且全是一堆各種各樣的特殊符號,完全不知所云。其實只是對正則不了解而以,了解了你就會發現,原來就這樣啊正則所用的相關字元其實不多,也不難記,更不難懂,唯一難的就是組合起來之後,可讀性比較差...

正規表示式 介紹

表示式全集 字元 描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了regexp物件的multiline屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的...