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