1.常用符號
常見元字元
. 匹配除換行外的所有字元
\b 匹配單詞開始或結束
\d 匹配數字
\w 匹配字母、數字、下劃線
\s 匹配任意空白字元,包括空格、製表符(tab)、換行符、中文全形空格等
^ 匹配字串開始
$ 匹配字串結束
常見限定符
* 重複零次或多次
+ 重複一次或更多次
? 重複一次或零次
重複n次
重複n次或更多次
重複n到m次
常見反義
\w 匹配任意不是字母、數字、下劃線、漢字的字元
\s 匹配任意不是空白符的字元
\d 匹配任意非數字的字元
\b 匹配不是開頭或結束的位置
[^a]匹配除a以外的任意字元
[^abcde]匹配除了abcde以外的任意字元
[^(123|abc)]匹配除了1、2、3或者a、b、c的任意字元
例子:匹配qq號:^\d$
匹配一句話中s開頭單詞:\bs\w*\b
2.字元集合
正規表示式通過來自定義字元合集
例如 [abcde] 匹配a、b、c、d、e中任意乙個字元
[a-za-z0-9_] 等同於\w
3.分支條件
分支條件指的是在正規表示式裡有多個匹配條件,只要滿足其中一種就被當成匹配,具體是用「|」表示
例 : 匹配帶區號的**號,北京區號010+八個數字,承德是0314+七位數字
0\d-\d|0\d-\d
4.分組
正規表示式用「()」表示分組
ip位址範圍(0-255).(0-255).(0-255).(0-255)
分為以下匹配條件
25[0-5]
2[0-4][0-9]
1[0-9]
[1-9][0-9]
[0-9]
((25[0-5]|2[0-4][0-9]|1[0-9]|[1-9][0-9]|[0-9])\.)(25[0-5]|2[0-4][0-9]|1[0-9]|[1-9][0-9]|[0-9])
5.後向引用
就是引用之前的組,每個組都有乙個id,可以通過id引用前面的組,要注意的是引用的是內容而不是模式
也可以自己指定表示式的組名方式如下:
(?\d+) 或者(?\d+)這個組的名稱就是name
(?:\d+)不捕獲文字,也不命名,作用是減少資源占用。
6.零寬斷言
零寬斷言 我們知道元字元是匹配乙個位置,而且這個位置需要滿足一定條件,我們把這個條件稱為斷言
或零寬度斷言
正規表示式只有在斷言為真的時候才會進行匹配
零寬斷言有兩種:正向零寬斷言,負向零寬斷言
正向零寬斷言有兩種形式:
(1)(?=exp)叫做零寬度正向**先行斷言,就是**後面一定匹配到表示式,而且只有匹配到表示式才會匹配前面的表示式
例如 [a-z]*(?=ing) 匹配 i love cooking 智慧型匹配到 cooking 這個詞
(2)(?<=exp)叫做零寬度正回顧後發斷言,從左面開始匹配表示式,匹配成功之後再去匹配之後的字串
例如 (?<=abc) 匹配abcdefgabc 得到結果是 defgabc,而不是abcdefg
負向零寬斷言也有兩種形式:
(1)(?!exp)叫做零寬度負**先行斷言,斷言此位置後面不能匹配exp。
例如 \b((?!abc)\w)+\b 匹配abc123,ade123 得到結果ade123
(2)(?).*(?=<\/\1>)
匹配hello world
思路是通過零寬度正向回顧後發斷言得到「hello world
」再通過匹配
並且引用id=1的組,通過零寬度正向**先行斷言,去掉
正規表示式 正則入門
先從乙個例子開始正規表示式。書寫乙個匹配手機號的正規表示式,為了方便討論,假定手機號是1開頭,第二位只能是3 5 8中的其中乙個,總共11位的數字,形如13 匹配手機號的正規表示式為 1 358 d 下面介紹此正規表示式中的各個符號的含義。表示字串的開頭,後面緊接著1,表示匹配的字串要以 1 開頭。...
正規表示式入門
對於文字字元,有11個字元被保留作特殊用途。他們是 這些特殊字元也被稱作元字元 不可顯示字元 可以使用特殊字串行來代表某些不可顯示字元 代表tab 0x09 代表回車符 0x0d 代表換行符 0x0a 字符集 字符集是由一對方括號 括起來的字元集合。使用字符集,你可以告訴正規表示式引擎僅僅匹配多個字...
正規表示式入門
老師說過 正規表示式就是用字串讀取字串!學習正規表示式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下面給出了不少簡單的例子,並對它們作了詳細的說明。假設你在一篇英文 裡查詢hi,你可以使用正規表示式hi。這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串 由兩個字元組成,前乙...