摘要:正則表達式總結知識點總結正則表達式正則表達式為什么需要正則表達式文本的復雜處理。學習正則表達式很大程度上就是學習表達式的語法規則。捕獲元素編號為零的第一個捕獲是由整個正則表達式模式匹配的文本。
正則表達式總結
@(Java知識點總結)[Java, 正則表達式]
正則表達式(regular expression)為什么需要正則表達式?
文本的復雜處理 。
正則表達式的優勢和用途?
一種強大而靈活的文本處理工具;
大部分編程語言、數據庫、文本編輯器、開發環境都支持正在表達式。
正則表達式定義:
正如他的名字一樣是描述了一個規則,通過這個規則可以 匹配一類字符串 。
學習正則表達式很大程度上就是學習表達式的語法規則。
開發中使用正則表達式的流程:
分析所要匹配的數據,寫出測試用的典型數據
在工具軟件中進行匹配測試
在程序中調用通過測試的正則表達式
語法普通字符 | 字母、數字、漢字、下劃線、以及沒有特殊定義的標點符號,都是“普通字符”。 表達式中的普通字符,在匹配一個字符串的時候,匹配與之相同的一個字符 | |||
---|---|---|---|---|
簡單轉義字符 | ||||
n | 代表換行符 | |||
t | 制表符 | |||
代表本身 | ||||
^ , $ , . , ( , { , } , ? , + , * , | , [ , ] | 匹配這些字符本身 | |||
標準字符集合 (注意大小寫區分,大寫是相反的意思) | ||||
d | 任意一個數字,0~9中的任意一個 | |||
w | 任意一個字母或數字或下劃線, 也就是A~Z,a~z,0~9,_中任意一個 | |||
s | 包括空格、制表符、換行符等空白字符的其中任意一個 | |||
. | 小數點可以匹配除了換行符的任意一個字符 如果要匹配包括“n”在內的所有字符,用[sS] | |||
自定義字符集合 - []能夠匹配方括號中的任意一個字符 | ||||
[ab5@] | 匹配a或b或5或@ | |||
[ ^abc ] | 匹配a、b、c 之外的任意一個字符 | |||
[f-k] | 匹配f~k之間的任意一個字母 | |||
[ ^A-F0-3 ] | 匹配A~F,0~3之外的任意一個字符 | |||
自定義字符集合 - []能夠匹配方括號中的任意一個字符 |
量詞 (Quantifier) 修飾匹配次數的特殊符號 | |||
{n} | 表達式重復n次 | ||
{m,n} | 表達式至少重復m次,至多重復n次 | ||
{m,} | 表達式至少重復m次 | ||
非貪婪模式:修飾匹配次數的特殊符號后加一個?,表示匹配的字符越少越好。 例如:d{3,6}? 表示:匹配3個數字 | |||
? | 相當于{0,1},表達式匹配0次或1次 | ||
+ | 相當于 {1,},表達式至少匹配一次 | ||
* | {0,},表達式不出現或出現任意次 |
字符邊界 (匹配的是位置) | ||
^ | 字符串開始的地方匹配 | |
$ | 字符串結束的地方匹配 | |
b | 匹配一個單詞邊界,前面的字符和后面的字符不全是w |
匹配模式 | ||
IGNORECASE 忽略大小寫模式 | 匹配是忽略大小寫 默認情況下,正則表達式是要區分大小寫的 | |
SINGLELINE 單行模式 | 整個文本看作一個字符串,只有一個開頭,一個結尾 使小數點“.”,可以匹配包含換行符(n)在內的任意字符 | |
MULITILINE 多行模式 | 每行都是一個字符串,都有開頭和結尾 在指定了MULTILINE之后,如果選喲僅匹配字符串開始和結束位置,可以使用A和Z |
選擇符和分組 | |||
| 分支結構 | 匹配是忽略大小寫 默認情況下,正則表達式是要區分大小寫的 | ||
() 捕獲組 | (1)在被修飾匹配次數的時候,括號中的表達式可以作為整體被修飾。 (2)取匹配結果的時候,括號中的表達式匹配到的內容可以被多帶帶得到。 (3)每一對括號會分配一個編號,使用()的捕獲根據左括號的順序從1開始自動編號。捕獲元素編號為零的第一個捕獲是由整個正則表達式模式匹配的文本。 | ||
(?:Expression) 非捕獲組 | 一些表達式中,不得不使用(),但又不需要保存()中子表達式匹配的內容,這時可以用非捕獲組來抵消使用()帶來的副作用。 | ||
反向引用(nnn) - 每一對()會分配一個編號,使用()的捕獲根據左括號的順序從1開始自動編號。 - 通過反向引用,可以對分組已捕獲的字符串進行引用。 |
預搜索 (零寬斷言) | |||
(?=exp) | 斷言自身出現的位置的 __后面__能匹配表達式exp | ||
(?<=exp) | 斷言自身出現的位置的 __前面__能匹配表達式exp | ||
(?!=exp) | 斷言此位置的__后面__不能匹配表達式exp | ||
(? | 斷言此位置的__前面__不能匹配表達式exp | ||
- 只進行子表達式的匹配,匹配內容不計入最終的匹配結果,是零寬度。 - 這個位置應該符合某個條件。判斷當前位置的前后字符,是否符合指定的條件,但不匹配前后的字符。是對位置的匹配。 - 正則表達式匹配過程中,如果子表達式匹配到的是字符內容,而非位置,并被保存到最終的匹配結果中,那么就認為這個子表達式是占有字符的;如果子表達式匹配的僅僅是位置,或者匹配的內容并不保存到最終的匹配結果中,那么就認為這個子表達式是零款多帶帶的。占有字符還是零寬度,是針對匹配的內容是否保存到最終的陪陪結果中而言的。 例如:[a-z]+(?!d+),匹配以任意個字母開頭且后面不能有數字的表達式。。 |
思路:
由數字和“-”構成
電話號碼為7到8位
如果電話號碼中包含有區號,那么區號為三位或四位,首位是0
區號用“-”和其他部分隔開
移動電話號碼為11位
11位移動電話號碼的第一位和第二位為“13”,“15”,“18”
(0d{2,3}-d{7,9})(1[35789]d{9})
電子郵件地址驗證思路:
用戶名:字母、數字、中劃線、下劃線組成。
@
網址:字母、數字組成。
小數點:.
組織域名:2-4位字母組成。
不區分大小寫
[w-+@[a-z0-9A-Z]+(.[A-Za-z]{2,4}){1,2}
java.util.regex包下面:
類 Parttern:正則表達式的編譯表示形式。 類 Matcher:通過解釋 Pattern 對 字符串執行匹配操作的引擎。
/** * 電話號碼正則表達式測試 * @author TR * */ public class Reg { public static void main(String[] args) { //建立正則表達式,并啟用相應模式 //java中轉為 Pattern p = Pattern.compile("(0d{2,3}-d{7,9})|(1[35789]d{9})" ); //匹配字符串 Matcher m = p.matcher("010-7758258"); boolean yesorno = m.matches(); System.out.println(yesorno); } }
/** * 分組 * @author TR * */ public class Reg { public static void main(String[] args) { Pattern p = Pattern.compile("([1-9]+)([a-z]+)"); //該方法掃描輸入的序列,查找與該模式匹配下一個序列 Matcher m = p.matcher("23434aaa**sfsd233**23dffd" ); while(m.find()){ System.out.println(m.group()); System.out.println(m.group(1)); System.out.println(m.group(2)); System.out.println("~~~~~~~~~~~~~~~~~~~~"); } } }
public class Reg { public static void main(String[] args) { Pattern p = Pattern.compile("[0-9]"); //該方法掃描輸入的序列,查找與該模式匹配下一個序列 Matcher m = p.matcher("23434aaa"); System.out.println(m.replaceAll("#")); //替換 #####aaa String s = "aa222bb333cc3434"; String[] arrs = s.split("d+"); //切割 System.out.println(Arrays.toString(arrs)); //[aa, bb, cc] } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76536.html
摘要:正則表達式一直是里比較難以掌握的點。在中創建正則的兩種方式使用字面量這就是正則表達式的字面量語法,表示正則表達式的模式,為正則表達式的標志。字面量形式的正則表達式一般使用較多,也推薦大家盡可能使用這種形式,簡潔易讀,符合正常的使用習慣。 正則表達式一直是js里比較難以掌握的點。 看不懂,學不會,記不住。 每次需要用到正則的時候,都需要再去查找資料。 今天花時間把正則的知識點總結下,希望...
摘要:改為后,顯示出文件的大概大小,單位是或者或者默認為,顯示的文件時間為時間。 這是 Nginx 學習總結的第三篇,上一篇介紹到了 Nginx 學習總結(2) —— 基本配置,這一篇會對Location 模塊 做一些總結。我們知道,Location 模塊 主要是用于針對某些特定的 URL 進行配置,可以由前綴字符串定義,也可以由正則表達式定義。 Location 匹配規則 location...
摘要:正則表達式匹配但是不是使用正則表達式的方法提供了不少使用正則表達式的方法。當正則表達式包含子表達式且不包含全局標志時,二者返回相同的數組。示例當正則表達式帶有全局標志時,二者表現不一致。 一路以來遇到正則表達式的地方都是直接去百度的,因為感覺大部分遇到的正則表達式的地方都是很常見的。這次順便總結下正則表達式比較難記的部分,方便自己日后查閱吧( ̄. ̄) 正則表達式中的特殊字符 感覺MDN...
摘要:如果你知道正則表達式模式將會改變,或者你事先不知道什么模式,而是從另一個來源獲取,如用戶輸入,這些情況都可以使用構造函數。 為什么要使用正則表達式 正則表達式通過由普通字符和特殊字符組成的文字模板完成對字符串的校驗,搜索,替換。在javascript中類似這樣 /^1d{10}$/ 上面的這個簡單的正則用來匹配手機號至于說正則表達式到底有什么意義,借由《精通正則表達式》里面的一句話來概...
閱讀 1833·2021-11-25 09:43
閱讀 1335·2021-11-22 15:08
閱讀 3735·2021-11-22 09:34
閱讀 3225·2021-09-04 16:40
閱讀 3002·2021-09-04 16:40
閱讀 542·2019-08-30 15:54
閱讀 1335·2019-08-29 17:19
閱讀 1752·2019-08-28 18:13