柚子快報(bào)邀請(qǐng)碼778899分享:正則表達(dá)式
柚子快報(bào)邀請(qǐng)碼778899分享:正則表達(dá)式
概念:
正則表達(dá)式是一種字符串匹配的模式。
可以用來檢查一個(gè)串是否含有某種子串、將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串。
正則表達(dá)式中包含普通字符和特殊字符(元字符)。 普通字符:英文字母、阿拉伯?dāng)?shù)字等 特殊字符:具有特殊功能的字符,例如 . \ ^ $ * + ? 等。
---------------------------------------------------------------------------------------------------------------------------------
匹配模式:
?i: 正則表達(dá)式默認(rèn)是大小寫敏感的,使用此模式可以忽略大小寫。
m: 多行模式,影響^和$匹配行為。
s: 影響.的匹配行為,使用此模式時(shí),.可以匹配\n
---------------------------------------------------------------------------------------------------------------------------------
常用元字符:
\d:匹配數(shù)字字符。
\D:匹配非數(shù)字字符。
\w:匹配字母、數(shù)字、下劃線字符。
\W:匹配非數(shù)字、字母、下劃線字符。
\s:匹配空格,包含\r\n\t\v\f 。
.:默認(rèn)情況下匹配除\n外的所有字符,當(dāng)使用s匹配模式時(shí),也可以匹配\n。
\: ?與其他字符一起表示特殊含義,如:\n \t。轉(zhuǎn)義特殊字符,如\\ \.。
\xnn: 表示ASCII碼值為nn的字符,nn為兩位16進(jìn)值數(shù)字。
? ? ? ? --示例: 大寫字母A的ASCII碼值為65,16進(jìn)制表示為0x41,在正則表達(dá)式中可用\x41表示 \unnnn: 表示unicode值為nnnn的字符,nnnn為四位16進(jìn)值數(shù)字
? ? ? ? --示例: 漢字“張”的unicode值為24352,16進(jìn)制表示為0x5f20,在正則表達(dá)式中可用\u5f20表示
---------------------------------------------------------------------------------------------------------------------------------
匹配指定字符:
方括號(hào)可以指定匹配的字符列表。
????????示例:
????????[ABCD]:匹配ABCD中任意一個(gè)字符。
????????[^ABCD]:匹配除ABCD以外其他字符。
????????[A-Za-z0-9]:匹配大寫英文字母,小寫英文字母,數(shù)字0到9。
---------------------------------------------------------------------------------------------------------------------------------
匹配次數(shù):
通常情況下,我們會(huì)匹配具有一定特征的字符串,需要匹配多個(gè)字符。
*:匹配出現(xiàn)0次或多次 。
+:匹配出現(xiàn)1次或多次 。
?:匹配出現(xiàn)0次或一次。
默認(rèn)情況下,*和+會(huì)盡量多匹配字符,使用非貪婪模式可以盡量少的匹配字符。
*和+對(duì)參數(shù)的上限沒有限制,在實(shí)際場(chǎng)景中,有時(shí)需要對(duì)字符的出現(xiàn)次數(shù)進(jìn)行限制。
{m}: 匹配字符出現(xiàn)m次。
{m,n}: 匹配字符出現(xiàn)m到n次。
{m,}: 匹配字符出現(xiàn)m次及m次以上。
---------------------------------------------------------------------------------------------------------------------------------
匹配位置:
在匹配過程中,需要匹配以某些特定字符串開始或以某個(gè)特定字符串結(jié)尾的字符。
^: 匹配字符串開始,當(dāng)開啟多行模式時(shí),也可匹配行首位置。
$: 匹配字符串結(jié)尾,當(dāng)開始多行模式時(shí),可匹配行尾位置。
\b: 匹配單詞邊界。
---------------------------------------------------------------------------------------------------------------------------------
子表達(dá)式:
在匹配字符串過程中,需要把多個(gè)字符看作一個(gè)整體匹配多次,需要使用子表達(dá)式。
????????示例:
????????匹配IP:10.221.83.123
????????格式:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
????????優(yōu)化后:(\d{1,3}\.){3}\d{1,3}
在需要使用“或”關(guān)系時(shí),常常使用子表達(dá)式。
????????示例:
????????匹配IP:10.221.83.123
????????格式:^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$
????????注意:“或”關(guān)系并不依賴子表達(dá)式,可以不在()內(nèi)使用
在匹配過程中,需要引用之前的匹配結(jié)果,常常使用子表達(dá)式。
????????示例:
????????獲取標(biāo)簽內(nèi)文本內(nèi)容 字符串:?? ?
????????????????“
hello world
” ?? ??? ? ?? ????????????????????“
Good luck
” ?? ??? ?????????????????“
Nice to meet you”
????????模式:
????????????????<[Hh][1-6]>(.*)[Hh][1-6]>
????????優(yōu)化后模式:
????????????????<([Hh][1-6])>(.*)\1>
---------------------------------------------------------------------------------------------------------------------------------
環(huán)視
在匹配過程中,需要匹配以特定字符開始或結(jié)尾但不消耗特定字符。
示例:
????????匹配url地址中協(xié)議 文本: ?
????????????????“http://www.baidu.com” ?? ? ?
????????????????“https://www.mioffice.cn” ?? ? ?
????????????????“ftp://ftp.net.pku.edu.cn” ?? ??? ?
????????模式:
????????????????[A-Za-z]+(?=:)
---------------------------------------------------------------------------------------------------------------------------------
環(huán)視的四種形式:
????????肯定式向前查看:(?=) ,匹配后面為特定字符串的字符串,不消耗特定字符串
????????否定式式向前查看:(?!) ,匹配后面不為特定字符串的字符串,不消耗特定字符串
????????肯定式向后查看:(?<=),匹配前面為特定字符串的字符串,不消耗特定字符串
????????否定式式向后查看:(?
柚子快報(bào)邀請(qǐng)碼778899分享:正則表達(dá)式
好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。