正規表示式

2022-02-11 23:20:27 字數 2028 閱讀 3905

refer: 

一直以來都逃避正則,但寫**不會一點正則有時候真的很痛苦,所以還是得學一下最基本的. 這裡做一下筆記唄.

1. \b

如果我們想匹配乙個單詞. 比如 hi, 那麼我們一定不希望它匹配到 his, hit 等等 

那麼我們可以加上 \bhi\b 這樣就 ok 了. 它的邏輯是匹配的字前後不可以是字母或數字 (符號, 空格都是 ok 的)

2. .     

點匹配萬物, 除了換行

3. \d  

匹配數字, 小數點不匹配哦,不要傻傻的

4. \w

匹配字母,數字, 漢字和下劃線, 不要問我為什麼跑出乙個下劃線來...

如果不希望下劃線,也可以用另乙個寫法 [a-za-z0-9] 但這個不匹配漢字

5. \s

匹配空格和 tab

6 ^ 和 $

通常會一起用, ^ 是表示匹配第乙個字串開始. 比如 ^a 就是說第乙個字一定要是 a 

如果只是 a 那麼意思是字串裡頭只要有 a 就可以了, ^ 就只能是開頭就要 a 

$ 就是結尾. 

所以我們驗證一整個字串通常就會用到這個了

上面講了匹配,接下來講一下要求匹配的數量

1. *

0次或多次, 比如 aaa 如果我只是寫 a 那麼會有 3 給 match (每乙個 match 裡面乙個字)

而我寫 a* 就只有乙個 match 裡面有 3 個字

2. +

1次或多次. 和 * 一樣, 唯一區別是 * 可以 0 次,這個最少一次

3. ?

0次或1次, 就是有或沒有. 重點不是數量了, 所以它是沒有多次概念的

4. n 就是任你寫乙個數字. 要配個幾個就幾個

5. n 個以上, 反過來是沒有的哦 《--這個是錯誤的

6. inclusive between n and m 

再來說一下其它熱門的

1. 方括號: 方括號是單個匹配,如[abc]他限制的不是abc連續出現,而是只能是其中乙個,這樣寫那麼規則就是找到這個位置時只能是a或是b或是c; 

方括號是正規表示式中最常用的,常用的用法有:[a-za-z0-9]匹配所有英文本母和數字,[^a-za-z0-9]匹配所有非英文本母和數字。

這段抄來的. 我還沒悟道, 之後再寫.

裡面不是連環的,而是類似單個 or , 比如 [aeiou] 匹配的不是連續而是 a 或 e 或 i 或 o 或 u.

另乙個特點是 [.] 匹配的是 . 而不是任意字元, 但是 [\s] 依然是匹配空格. 所以不能理解為裡面沒有元字元. 再研究

2. | 

或者 \d | abc 就是說 3 個數字或者匹配 abc 字串

3. 反義 not 

\s  \s 以外

\w \w 以外, 

\d \d 以外

[^aeiou] 加上 ^ 表示以外

[^a-za-z0-9_\s] 可以算是匹配符號

4. (\d) 圓括弧是把表示式抱起來用,和數學有點像. 

然後就是這樣寫 (ab)  ab出現 2次, 如果是 ab 那麼只是 b 出現 2 次.

(ab|cd) 配合 or 也是經常的用法

5. 斷言

refer 

dada

如果想匹配出 dada 而已, 那麼就一定要用到斷言了. 

斷言的功能是它可以寫一些匹配,但是最終缺沒有被匹配出來 

像上面的表達是這樣的

我想找 .* whatever 但是前面必須是 後面必須是

4 種斷言寫法 

(?=x)

(?<=x)

(?!x)

(?共同點是 (?)

然後一種是等於(=), 一種是不等於(!)

然後一種有箭頭(<), 一種沒有. 有箭頭的是說斷言放在前面. 沒有的就放後面

所以上面的寫法是 

step 1 : *. 匹配所有

step 2 : (?<=).* 斷言在前面所有要箭頭

step 3: (?<=).*(?=<\/title>) 斷言在後面所以沒有箭頭

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...