正規表示式可以理解為描述一種字串的規則,通過這個規則,在乙個字串中進行匹配,從而找到符合這個規則的所有的字串。
例1. \b 正規表示式的乙個元字元,代表單詞的開頭或結尾 , 相當於單詞的分界處
\b abc \b 匹配字串中的abc
例2.\b a \b .*\b n \b 表示匹配a~n 不論a n之間存在多少字串
. 乙個元字元,表示匹配除換行符以外的任意字元
* 乙個元字元,表示前面的內容可以連續重複使用任意次,例如assdan
.* 表示a n之間可以存在任意數量的不包含換行符的字元
例3.0 \d\d - \d\d\d\d 099-00000 \d - \d 表示前面 \d 必須連續重複匹配n次
例4. ^ $ 分別表示字串的開始和結束
^\d$ 匹配 5 ~12位 的數字
常用元字元 .
匹配除換行符以外任意字元
\w匹配字母或數字或下劃線或漢字
\s匹配任意的空白符
\d匹配數字
\b匹配單詞的開始結束
^字串的開始
$字串的結束
常用的限定符 *
重複0次或更多
+重複一次或更多
?重複一次或0次
重複n次
重複n次或更多
重複n到m次
1.字元轉義 涉及到元字元本身用\ \* \\ \.
2.[. ? !] 匹配或. 或? 或!
3.分支條件 | 相當於 或 0\d | 0\d 匹配符合這2種的任意一種
4.分組 () (\2[0-3]\d) ()重複3次
5.反義
常用反義** \w
匹配任意不是字母,數字,下劃線,漢字的字元
\s匹配任意不是空白符的字元
\d匹配任意非數字的字元
\b匹配不是單詞開頭或結束的位置
[^x]
匹配除了x以外的任意字元
[^adop]
匹配除了adop字母以外的任意字元
6.後向引用
使用()指定子表示式後,捕獲
例 \b (\w+) \b \s+ \1 \b 匹配 go go \1表示捕獲(\w+)
自定義組名(?\w+) 反向引用分組捕獲的內容 \k
\b(?\w+)\b\s+\k\b
7.零寬斷言
7.1(?=exp)
\b\w+(?=ing\b) 匹配ing結尾的單詞前面的部分 singing 匹配sing
7.2(?<=exp)
(?<=\bre)\w+\b 匹配re開頭的後半部分 reading 匹配ading
8.負向零寬斷言
8.1(?!exp) 此位置的後面不能匹配表示式exp
\d(?!\d) 匹配3位數字,3位數字後面不能是數字
8.2(?(?9.注釋 (?#comment)
10.貪婪 懶惰
貪婪匹配 在使表示式得到匹配的前提下,匹配盡可能多的字元 .*
懶惰匹配 匹配盡可能少的字元 .*?
懶惰限定符 *?
重複任意次,盡可能少重複
+?重複1次或多次,盡可能少
??重複0次或1次,盡可能少
?重複n到m次,盡可能少
?重複n次,盡可能少
參考資源
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...