正規表示式

2021-09-11 23:47:34 字數 1761 閱讀 5585

說明

**匹配除換行符外的任意字元

.匹配數字或字母或漢字或下劃線

\w匹配任意的空白字元

\s匹配數字

\d匹配單詞的開始或結束

\b匹配字串的開始

^匹配字串的結束$

比如匹配乙個5到12位的扣扣號:^\d$

比如你要匹配\,.,*等就出現了問題,這時你就要用特殊的轉義字元\來代替了

比如你使用\\就是匹配\,使用\.就是匹配.使用\*就是匹配*.例如:deerruan\.net

就是匹配deerruan.net,使用c:\\windows就是匹配c:\windows.

常用的限定符

**/語法說明*

重複零次或更多次

+重複一次或更多次

?重複零次或一次

重複n次

重複n次或更多次

重複n到m次

例如:windows\d+ 匹配windows乙個或多個數字

^\w+ 匹配一行的地乙個單詞(或乙個字串的的第乙個單詞)

要想查詢數字,字母或數字,空白是很簡單的,因為已經有了對應這些字元集合的元字元,但是如果你想匹配沒有預定義元字元的字元集合(比如母音字母a,e,i,o,u),應該怎麼辦?

很簡單,你只需要在方括號裡列出它們就行了,像[aeiou]就匹配任何乙個英文母音字母,[.?!]匹配標點符號(.或?或!)。

我們也可以輕鬆地指定乙個字元範圍,像[0-9]代表的含意與\d就是完全一致的:一位數字;同理[a-z0-9a-z_]也完全等同於\w(如果只考慮英文的話)。

下面是乙個更複雜的表示式:\(?0\d[) -]?\d。

這個表示式可以匹配幾種格式的**號碼,像(010)88886666,或022-22334455,或02912345678等。我們對它進行一些分析吧:首先是乙個轉義字元\(,它能出現0次或1次(?),然後是乙個0,後面跟著2個數字(\d),然後是)或-或空格中的乙個,它出現1次或不出現(?),最後是8個數字(\d)。

分支條件

具體方法是用|把不同的規則分隔開。

例如:0\d-d|0\d\d匹配三位區號8位本地號碼的或者4位區號7位本地號

但如果想要重複多個字元又該怎麼辦?你可以用小括號來指定子表示式(也叫做分組),然後你就可以指定這個子表示式的重複次數了,你也可以對子表示式進行其它一些操作(後面會有介紹)。

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

ip位址中每個數字都不能大於255. 經常有人問我, 01.02.03.04 這樣前面帶有0的數字, 是不是正確的ip位址呢? 答案是: 是的, ip 位址裡的數字可以包含有前導 0 (leading zeroes).

不幸的是,它也將匹配256.300.888.999這種不可能存在的ip位址。

反義有時需要查詢不屬於某個能簡單定義的字元類的字元。比如想查詢除了數字以外,其它任意字元都行的情況,這時需要用到反義:

常用的反義**

**語法

說明\w

匹配任意不是字母,數字下劃線沒漢字的字元

\s匹配任意不是空白符的字元

\d匹配任意非數字的字元

\b匹配不是單詞開頭或結束的位置

[^x]

匹配除了x以外的任意字元

[^aeiou]

匹配除了aeiou以外的任意字元

例如:\s+匹配不包含空白符的字串

]+>匹配用見括號括起來的以a開頭的字串

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

非負整數 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正規表示式 編寫正規表示式

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