正規表示式學習筆記

2021-09-06 18:25:52 字數 2193 閱讀 5129

\b 代表單詞的開頭或結尾,也就是單詞分隔,例如想找出 how are you?這句的想找出單詞are 就可以使用 \bare\b

.  代表匹配除了換行以外的任意字元

\d 表示一位數字 比如 \d-\d 就可以匹配 2-2 3-3 這樣

\w 字母或數字或下劃線或漢字

\s 匹配任意空白字元

^ 字串的開頭

$ 字串的結尾

* (重複0次或更多次)代表前邊的內容可以連續重複使用任意次以使整個表示式得到匹配。

+ 一次或更多次

? 一次或0次

重複n次

重複n次或更多次

重複n到m次

示例:例1:下列字串 how are you? fine thankyou. and you? 如果想找出how和fine之間的所有字串可以用 how\b.*\bfine\b

例2:要想匹配 0931-3334224 這樣的字串 只需 \d-\d

比如想找預定義的字元集合那就要用到這一節的內容了。

例如[aeiou] 如果你要匹配任意乙個母音字母可以使用

[.?!] 匹配這三個標點符號

[0-9] 匹配0-9的任意乙個數字 與\d完全一致

[a-z0-9a-z] 也完全等同於\w(如果只考慮英文的話)

\(?0\d[) -]?\d 這個表示式可以匹配幾種**號碼像(010)8888666或020-2236355。\(? 表示可以有乙個或沒有左括號 0\d 表示第乙個數字為0後兩個字元是兩個數量類似 010 020  這些。[)-]? 表示有或者沒有右括號) 或 - 號。\d表示8位數字

不幸的是,剛才\(?0\d[) -]?\d  這個表示式也能匹配 010)12345678或(022-87654321這樣的「不正確」的格式。要解決這個問題我們就要用到分支條件。分支就是用 | 把幾個表示式連線起來只要匹配其中的乙個表示式就當成匹配了。

0\d-\d|0\d-\d這個表示式能匹配兩種以連字型大小分隔的**號碼:一種是三位區號,8位本地號(如010-12345678),一種是4位區號,7位本地號(0376-2233445)。

\(?0\d\)?[- ]?\d|0\d[- ]?\d這個表示式匹配3位區號的**號碼,其中區號可以用小括號括起來,也可以不用,區號與本地號間可以用連字型大小或空格間隔,也可以沒有間隔。你可以試試用分枝條件把這個表示式擴充套件成也支援4位區號的。

前面我們提到可以重複單個字元比如 \d \d重複4次,但是如果要重複多個字元我們該怎麼辦答案是可以用小括號來指定分組,也就是可以指定這個子表示式的重複次數了,你也可以對子表示式進行一些其它的操作

(\d\.)\d是乙個簡單的ip位址匹配表示式。要理解這個表示式,請按下列順序分析它:\d匹配1到3位的數字,(\d\.)匹配三位數字加上乙個英文句號(這個整體也就是這個分組)重複3次,最後再加上乙個一到三位的數字(\d)

有時需要表示 不等於 這種條件。。比如 不等於 數字 不等於字母等。這裡就要用到反義。

反義就是把原先不反義的變成大寫就成反義了如果 \d 非數字

後向引用簡單的說就是後面的引用前面的。引用前面的什麼呢,引用前面裡的括號裡的。括號裡的我們前面分組。那麼意思就是後面的可以引用前面分組的內容。怎麼引用呢? \1 就代表第乙個分組。\2就代表第二個分組。以此類推。

\b(\w+)\b\s+\1\b可以用來匹配重複的單詞,像go go, 或者kitty kitty。這個表示式首先是乙個單詞,也就是單詞開始處和結束處之間的多於乙個的字母或數字(\b(\w+)\b),這個單詞會**獲到編號為1的分組中,然後是1個或幾個空白符(\s+),最後是分組1中捕獲的內容(也就是前面匹配的那個單詞)(\1)。

你也可以指定自己的組名語法:(?\w+),這樣就把\w+的組名指定為word了。

留著以後學習

留前瞻以後學習

當正規表示式中包含能接受重複限定符時,通常行為是(在使整個表示式匹配的前提下)匹配盡可能多的字元。例如:a.*b,它將會匹配最長以a開始,以b結束的字串。如果用它來搜尋aabab的話。它會區配整個字元 。這種稱為貪婪匹配。

有時,我們更需要懶惰匹配,也就是匹配盡可能少的字元。前面給出的限定符都可以被轉化為懶惰匹配模式,只要在它後面加上乙個問號?。這樣.*?就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。現在看看懶惰版的例子吧:

a.*?b匹配最短的,以a開始,以b結束的字串。如果把它應用於aabab的話,它會匹配aab(第一到第三個字元)和ab(第四到第五個字元)。

比較複雜,以後再看。

正規表示式學習筆記

正規表示式學習日記 1 為萬用字元,表示任何乙個字元,例如 a.c 可以匹配 anc abc acc 2 在內可以指定要求匹配的字元,例如 a nbc c 可以匹配 anc abc acc 但不可以匹配 ancc a到z可以寫成 a z 0到9可以寫成 0 9 3 數量限定符號,表示匹配次數 或者叫...

正規表示式學習筆記

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

正規表示式學習筆記

1.正規表示式是可用於在乙個檔案或字元裡查詢和替代文字的一種標準。它具有兩種標準 基本的正規表示式 bre 擴充套件的正規表示式 ere ere包括bre功能和另外其它的概念。2.表示或運算 3.匹配任何單個字元 4.匹配任何中包含的單個字元,如 張王李 三,匹配張 三 王三,李三 5.將排除 後跟...