正規表示式

2021-08-28 22:26:45 字數 2417 閱讀 5294

自身是乙個字串,用於匹配、查詢或替換符合某些複雜規則的字串

比如**可以使用正規表示式[a-za-z]+://[^\s]*匹配

比windows檔案萬用字元*和?表達能力更強

參考教程:

例子:\ba\w*\b匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然後是字母a,然後是任意數量的字母或數字(\w*),最後是單詞結束處(\b) 。

\d+匹配1個或更多連續的數字。這裡的+是和類似的元字元,不同的是匹配重複任意次(可能是0次),而+則匹配重複1次或更次。

\b\w\b匹配剛好6個字元的單詞。

常用的元字元如下:

**說明

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

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

\s匹配任意的空白符

\d匹配數字

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

^匹配字串的開始

$匹配字串的結束

• 如果你想查詢元字元本身的話,比如你查詢.,或者*,就出現了問題:你沒辦法指定它們,因為它們會被解釋成別的意思。

• 這時你就得使用\來取消這些字元的特殊意義。因此,你應該使用\.和\*。當然,要查詢\本身,你也得用\\。

例子:– deerchao.net匹配deerchao.net。

– c:\windows匹配c:\windows。

例子:–windows\d+匹配windows後面跟1個或更多數字。

^\w+匹配一行的第乙個單詞(或整個字串的第乙個單詞,具體匹配哪個意思得看選項設定)

**/語法說明*

重複零次或更多次

+重複一次或更多次

?重複零次或一次

重複n次

重複n次或更多次

重複n到m次

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

使用分枝條件時,要注意各個條件的順序。

• 我們已經提到了怎麼重複單個字元(直接在字元後面加上限定符就行了);但如果想要重複多個字元又該怎麼辦?

• 你可以用小括號來指定子表示式(也叫做分組),然後就可以指定這個子表示式的重複次數了。

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

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

**/語法

說明\w

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

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

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

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

[^x]

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

[^aeiou]

匹配除了aeiou這幾個字母以外的任意字元

使用小括號指定乙個子表示式後, 匹配這個子表示式的文字(也就是此分組捕獲的內容)可以在表示式或其它程式中作進一步的處理。預設情況下,每個分組會自動擁有乙個組號,規則是:從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。

後向引用用於重複搜尋前面某個分組匹配的文字。比如\1代表分組1匹配的文字。

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

(?=exp)斷言此位置的後面能匹配表示式exp。比如\b\w+(?=ing\b)匹配以ing結尾的單詞的前面部分(除了ing以外的部分),如查詢i『m singing while you』re dancing.時,它會匹配sing和danc。

(?<=exp)斷言此位置的前面能匹配表示式exp。比如(?<=\bre)\w+\b匹配以re開頭的單詞的後半部分(除了re以外的部分),例如在查詢reading a book時,它匹配ading。

(?!exp)斷言此位置的後面 不能匹配表示式exp。比如\d(?!\d)匹配三位數字,而且這三位數字的後面不能是數字;

\b((?!abc)\w)+\b匹配不包含連續字串abc的單詞。

(?**/語法

說明*?

重複任意次,但盡可能少重複

+?重複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正規表示式 編寫正規表示式

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