正規表示式簡單使用

2021-10-22 19:32:44 字數 4265 閱讀 5236

正規表示式很重要的就是其語法,知道了其含義,就能逐漸自己摸索著寫出一些正規表示式,進行一些校驗.

語法如下:

\將下一字元標記為特殊字元、文字、反向引用或八進位制轉義符。例如,"n"匹配字元"n"。"\n"匹配換行符。序列"\\\\"匹配"\\","\\("匹配"("。

匹配輸入字串開始的位置。如果設定了regexp物件的multiline屬性,^ 還會與"\n"或"\r"之後的位置匹配。

匹配輸入字串結尾的位置。如果設定了regexp物件的multiline屬性,$ 還會與"\n"或"\r"之前的位置匹配。

零次或多次匹配前面的字元或子表示式。例如,zo* 匹配"z"和"zoo"。* 等效於 。

一次或多次匹配前面的字元或子表示式。例如,"zo+"與"zo"和"zoo"匹配,但與"z"不匹配。+ 等效於 。

零次或一次匹配前面的字元或子表示式。例如,"do(es)?"匹配"do"或"does"中的"do"。? 等效於 。

n 是非負整數。正好匹配 n 次。例如,"o"與"bob"中的"o"不匹配,但與"food"中的兩個"o"匹配。

n 是非負整數。至少匹配 n 次。例如,"o"不匹配"bob"中的"o",而匹配"foooood"中的所有 o。"o"等效於"o+"。"o"等效於"o*"。

m 和 n 是非負整數,其中 n

<= m_。匹配至少 _n 次,至多 m 次。例如,"o"匹配"fooooood"中的頭三個 o。'o' 等效於 'o?'。注意:您不能將空格插入逗號和數字之間。

當此字元緊隨任何其他限定符(*、+、?、、、)之後時,匹配模式是"非貪心的"。"非貪心的"模式匹配搜尋到的、盡可能短的字串,而預設的"貪心的"模式匹配搜尋到的、盡可能長的字串。例如,在字串"oooo"中,"o+?"只匹配單個"o",而"o+"匹配所有"o"。

匹配除"\r\n"之外的任何單個字元。若要匹配包括"\r\n"在內的任意字元,請使用諸如"[\s\s]"之類的模式。

(_pattern_)

匹配 pattern 並捕獲該匹配的子表示式。可以使用$0…$9屬性從結果"匹配"集合中檢索捕獲的匹配。若要匹配括號字元 ( ),請使用"\("或者"\)"。

(?:_pattern_)

匹配 pattern 但不捕獲該匹配的子表示式,即它是乙個非捕獲匹配,不儲存供以後使用的匹配。這對於用"or"字元 (|) 組合模式部件的情況很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更經濟的表示式。

(?=_pattern_)

執行正向**先行搜尋的子表示式,該表示式匹配處於匹配 pattern 的字串的起始點的字串。它是乙個非捕獲匹配,即不能捕獲供以後使用的匹配。例如,'windows (?=95|98|nt|2000)' 匹配"windows 2000"中的"windows",但不匹配"windows 3.1"中的"windows"。**先行不占用字元,即發生匹配後,下一匹配的搜尋緊隨上一匹配之後,而不是在組成**先行的字元後。

(?!_pattern_)

執行反向**先行搜尋的子表示式,該表示式匹配不處於匹配 pattern 的字串的起始點的搜尋字串。它是乙個非捕獲匹配,即不能捕獲供以後使用的匹配。例如,'windows (?!95|98|nt|2000)' 匹配"windows 3.1"中的 "windows",但不匹配"windows 2000"中的"windows"。**先行不占用字元,即發生匹配後,下一匹配的搜尋緊隨上一匹配之後,而不是在組成**先行的字元後。

x_|_y

匹配 x 或 _y_。例如,'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"。

[xyz]

字符集。匹配包含的任一字元。例如,"[abc]"匹配"plain"中的"a"。

[^_xyz_]

反向字符集。匹配未包含的任何字元。例如,"[^abc]"匹配"plain"中"p","l","i","n"。

[a-z]

字元範圍。匹配指定範圍內的任何字元。例如,"[a-z]"匹配"a"到"z"範圍內的任何小寫字母。

[^_a-z_]

反向範圍字元。匹配不在指定的範圍內的任何字元。例如,"[^a-z]"匹配任何不在"a"到"z"範圍內的任何字元。

\b匹配乙個字邊界,即字與空格間的位置。例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"。

\b非字邊界匹配。"er\b"匹配"verb"中的"er",但不匹配"never"中的"er"。

\c_x_

匹配 x 指示的控制字元。例如,\cm 匹配 control-m 或回車符。_x_ 的值必須在 a-z 或 a-z 之間。如果不是這樣,則假定 c 就是"c"字元本身。

\d數字字元匹配。等效於 [0-9]。

\d非數字字元匹配。等效於 [^0-9]。

\f換頁符匹配。等效於 \x0c 和 \cl。

\n換行符匹配。等效於 \x0a 和 \cj。

\r匹配乙個回車符。等效於 \x0d 和 \cm。

\s匹配任何空白字元,包括空格、製表符、換頁符等。與 [ \f\n\r\t\v] 等效。

\s匹配任何非空白字元。與 [^ \f\n\r\t\v] 等效。

\t製表符匹配。與 \x09 和 \ci 等效。

\v垂直製表符匹配。與 \x0b 和 \ck 等效。

\w匹配任何字類字元,包括下劃線。與"[a-za-z0-9_]"等效。

\w與任何非單詞字元匹配。與"[^a-za-z0-9_]"等效。

\x_n_

匹配 n_,此處的 _n 是乙個十六進製制轉義碼。十六進製制轉義碼必須正好是兩位數長。例如,"\x41"匹配"a"。"\x041"與"\x04"&"1"等效。允許在正規表示式中使用 ascii **。

\num

匹配 num_,此處的 _num 是乙個正整數。到捕獲匹配的反向引用。例如,"(.)\1"匹配兩個連續的相同字元。

\n標識乙個八進位制轉義碼或反向引用。如果 \n 前面至少有 n 個捕獲子表示式,那麼 n 是反向引用。否則,如果 n 是八進位制數 (0-7),那麼 n 是八進位制轉義碼。

\nm標識乙個八進位制轉義碼或反向引用。如果 \nm 前面至少有 nm 個捕獲子表示式,那麼 nm 是反向引用。如果 \nm 前面至少有 n 個捕獲,則 n 是反向引用,後面跟有字元 m_。如果兩種前面的情況都不存在,則 \_nm 匹配八進位制值 nm_,其中 _n 和 m 是八進位制數字 (0-7)。

\nml

當 n 是八進位制數 (0-3),_m_ 和 l 是八進位制數 (0-7) 時,匹配八進位制轉義碼 _nml_。

\u_n_

上述可能較多,自己從中按專案需要挑選自己所要用的即可.

通過兩個簡單的示例來驗證一下正規表示式的使用.

/**

* 1.完成郵箱的校驗

* 2.完成**號碼的校驗

*/public class testre

//正則

string regex1="^[a-z0-9a-z]+[a-z0-9a-z]@([a-z0-9]+\\.)+[a-za-z]+$";

pattern p = pattern.compile(regex1);

matcher m = p.matcher(email);

if(m.matches())else

}//**正則驗證方法

public static boolean isphone(string phone)

//正則

string regex2="^[1]+[0-9]+$";

pattern p = pattern.compile(regex2);

matcher m = p.matcher(phone);

if(m.matches())else

}@test

public void testemail()

@test

public void testphone()

}

示例中,編寫好正則後通過了pattern.compile()方法以及p.matcher()方法以及m.matches()方法來通過正則對傳入資料進行了乙個校驗,這三個是正則判斷時常用的方法

pattern.compile()--將字串轉為正規表示式,因為我們輸入正則語法時是乙個string型別,通過這個方法轉化為正則型別

p.matcher()--通過我們轉化的正則型別呼叫該方法,傳入我們要判斷的物件,提供匹配操作

m.matches()--該方法指將所有內容與正規表示式進行匹配,有一處不符合即為false.

正規表示式 簡單使用

一 校驗數字的表示式 1 數字 0 9 2 n位的數字 d 3 至少n位的數字 d 4 m n位的數字 d 5 零和非零開頭的數字 0 1 9 0 9 6 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7 帶1 2位小數的正數或負數 d d 8 正數 負數 和小數 d d 9 有兩位小數的...

python正規表示式簡單使用

python實用re模組來操作正規表示式,常用的方法如下 看下面一段 import re content abacadae matcher re.match ab content 字串開頭是ab,匹配成功 print matcher.span matcher re.match ac content ...

正規表示式的簡單使用

正規表示式 即查詢的高階寫法,通過匹配目標是格式來達到查詢的目的 正規表示式通常通過 斜槓來標記 比如 hello word 1 開頭和結尾 表示整個要匹配的目標字串的開頭,它表示開始位置的佔位符 例如 139 僅匹配處於字串開頭位置的139 比如1390100346 可以匹配到 156213934...