這篇文章主要為大家展示了“正則表達(dá)式的基礎(chǔ)知識(shí)點(diǎn)有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“正則表達(dá)式的基礎(chǔ)知識(shí)點(diǎn)有哪些”這篇文章吧。
目前創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、高唐網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
\cx:例: \ci 匹配ctrl+i(windows系統(tǒng)下面 ) 匹配類似\t的字符 就是匹配ascii碼的第十個(gè)字符,和字母表順序錯(cuò)開(kāi)一個(gè),因?yàn)榱悴黄ヅ洌@個(gè)x可以是a-z,A-Z,別的字符跟在\c后面將當(dāng)做匹配‘c’字符 例如:\c1
\f:匹配一個(gè)換頁(yè)符號(hào) [\cL]也可以匹配,作用:讓打印機(jī)打印下一張紙
\n:匹配一個(gè)換行符。[\cJ]
\r:匹配一個(gè)回車符。[\cM]
\s:匹配任意空白字符,不能顯示上屏幕上的,上面的他都可以匹配到
\S:匹配任何非空白的字符,和上面的相反,能顯示在屏幕上的
\t:匹配一個(gè)制表符號(hào)。 鍵盤上的tab鍵
\v:匹配一個(gè)垂直制表符。它的作用是讓‘\v’后面的字符從下一行開(kāi)始輸出,且開(kāi)始的列數(shù)為“\v”前一個(gè)字符所在列后面一列。
\w:類似[0-9a-zA-Z_]。表示數(shù)字、大小寫字母和下劃線。
\W:[^0-9a-zA-Z_]。非單詞字符。和上面匹配的內(nèi)容相反。
\d:[0-9]。表示是一位數(shù)字。
\D:[^0-9]。表示除數(shù)字外的任意字符。
上面的\n \r \s \S \t \w \W \d \D都是常用的,剩下的都是基本上不會(huì)用到的
如果要匹配以下的特殊字符,必須先讓字符轉(zhuǎn)義即'\x',
$:匹配以前面結(jié)尾的字符。 例如:ddsdsfsfa a$
只會(huì)匹配a這個(gè)字符,如果ddddsdsffb 匹配這個(gè)字符串,則沒(méi)有匹配
():標(biāo)記一個(gè)表達(dá)式的開(kāi)始和結(jié)束的位置
*:匹配前面的表達(dá)式零次或者多次
+:匹配前面的表達(dá)式一次或者多次
.:匹配除換行符\n之外的任何單字符
[]:匹配中括號(hào)表達(dá)式里面的東西,一般和^一起用
?:匹配前面的表達(dá)式零次或者一次
:將下一個(gè)字符轉(zhuǎn)義
^:匹配字符串開(kāi)始的位置
{:區(qū)配限定字符
() 是為了提取匹配的字符串。表達(dá)式中有幾個(gè)()就有幾個(gè)相應(yīng)的匹配字符串。一個(gè)()代表一個(gè)組 ([a-z][0-9])
這個(gè)正則你必須得先匹配到前面是a-z里面的東西,后面跟的還得是0-9里面的東西,才會(huì)匹配到值 例如:aadccc23這個(gè)字符串就可以匹配到c2,aadccc@23這個(gè)字符串,([a-z][0-9])
通過(guò)這個(gè)正則就匹配不到值 。 []是定義匹配的字符范圍。比如 [a-zA-Z0-9] 表示相應(yīng)位置的字符要匹配英文字符和數(shù)字。[\t]表示tab。 {}一般用來(lái)表示匹配的長(zhǎng)度,比如 \t{3} 表示匹配三個(gè)tab,\t[1,3]表示匹配一到三個(gè)tab。
|:指明兩項(xiàng)之間的一個(gè)選擇。(小括號(hào)‘()’會(huì)改變他的作用范圍) 例:wl:625363199@qq.com
wl|yjm|khl:.* 和 (wl|yjm|khl):.*
后者會(huì)匹配完整的wl:625363199@qq.com 前者則只會(huì)匹配wl ,因?yàn)楹笳叩男±ㄌ?hào)改變了|作用范圍,(wl|yjm|khl)使用范圍變成了(wlyjmkhl)
,和:.*
后面的字符不在一個(gè)段,所以可以匹配整個(gè)字符,前者的范圍在wl|yjm|khl:.*
上面,可以這樣理解wl
為一組yjm
為一組 khl:.*
為一組,所以匹配到wl就匹配完了如果將正則改為yjm|khl|wl:.*
就可以 匹配完整的字符串
貪婪模式的匹配正則:
“{m,n}”有n個(gè)最多匹配n個(gè) 例如:d{1,3}
ddd 匹配到的值就是ddd
"{m,}"有多少個(gè)就匹配多少個(gè) 例如:d{1,}
ddddd匹配到的值就是ddddd
"?"有一個(gè)就匹配一個(gè) 例如:d?
ddd匹配到的值就是d d d
"*"有多少個(gè)就匹配多少個(gè) 例如:"d星號(hào)(typora的bug)" ddd匹配到的值就是d d d
"+"有多少個(gè)就匹配多少個(gè) 例如:d+
ddd匹配到的值就是d d d
非貪婪模式正則:
"{m,n}?"按m匹配 例如:d{1,3}?
ddd 匹配到的值就是d d d 一個(gè)一個(gè)值返回
"{m,}?"按m個(gè)數(shù)匹配 例如:d{1,}?
ddd 匹配到的值就是d d d一個(gè)一個(gè)值返回
"??"匹配零個(gè) 例如:d??
ddd 匹配到的值就是沒(méi)有 匹配
"*?"匹配零個(gè) 例如:d星號(hào)?
ddd 匹配到的值就是沒(méi)有匹配
"+?"匹配一個(gè) 例如:d+?
ddd 匹配到的值就是 d d d一個(gè)一個(gè)值返回
*:匹配零次或者多次
+:匹配一次或多次
?:匹配零次或一次
{n}:n不能為負(fù)數(shù),至少匹配n次
{n,}:至少匹配n+次,
{n,m}:至少匹配n次最多匹配m次。n<=m
^:匹配字符串開(kāi)始的位置,和中括號(hào)結(jié)合使用體驗(yàn)最佳
$:匹配以前面結(jié)尾的字符。 例如:ddsdsfsfa a$
只會(huì)匹配a這個(gè)字符,如果ddddsdsffb 匹配這個(gè)字符串,則沒(méi)有匹配
\b:匹配一個(gè)單詞邊界,即字與空格間的位置,例如:?abc \ba
能匹配到a,\bb
就不能配置到b了,因?yàn)閎前面沒(méi)有沒(méi)有邊界字符,?a中bc 這樣\bb
就能匹配到b了因?yàn)閎和前面的‘中‘這個(gè)字符產(chǎn)生了邊界,所以就可以匹配了,一般符號(hào)和中文之間,符號(hào)和英文之間,中文和英文之間會(huì)產(chǎn)生邊界。
\B:匹配一個(gè)非單詞邊界,和上面匹配的相反,一般符號(hào)和符號(hào)之間,英文和英文之間,中文和中文之間沒(méi)有邊界。
^:不放在中括號(hào)里面匹配的是一行開(kāi)頭的部分,例如:daf ^d
這個(gè)是可以匹配到d的 ^da
也是可以匹配到da的,它們都跟在開(kāi)頭的后面是連續(xù)的,^a
是在daf這個(gè)字符串中是匹配不到a的,adf 這個(gè)字符串就可以被^a
匹配到 ,a字符是adf字符串中開(kāi)頭的第一個(gè)字符所以可以被匹配到,^d
匹配adf這個(gè)字符串,匹配不到d,因?yàn)閐不是開(kāi)頭的第一個(gè)字符。^ad
匹配adf這個(gè)字符串可以匹配到ad,因?yàn)閍d是開(kāi)頭前兩個(gè)字符,是連續(xù)的所以可以匹配。
^:放在中括號(hào)里面[^daf]
匹配以d開(kāi)頭的字符或者以a或者以f開(kāi)頭的字符,簡(jiǎn)單的說(shuō)就是不匹配daf 可以理解為取反的意思。例如:dafbbdcfgh 這個(gè)[^daf]
就會(huì)匹配 b b c g h 這幾個(gè)字符 。[^wl]
匹配”wl是w測(cè)l試呀wl字符串“這個(gè)字符串的結(jié)果是,是、測(cè)、試、呀、字、符、串。除了wl這兩個(gè)字符別的字符都匹配。
?=: 前瞻,匹配表達(dá)式前面的表達(dá)式的內(nèi)容。例如:a(?=b)
匹配ab這個(gè)字符串就會(huì)匹配到a這個(gè)字符,匹配ba這個(gè)字符串就匹配不到值 。
?<=:后顧,匹配表達(dá)式后面的表達(dá)式的內(nèi)容。例如:(?<=b)a
匹配ba這個(gè)字符串就會(huì)匹配到a這個(gè)字符,匹配ab這個(gè)字符串就匹配不到值 。
exp1(?!exp2):負(fù)前瞻,匹配后面不是exp2的exp1 例如:a(?!b)
匹配ba這個(gè)字符串會(huì)匹配到值,但是匹配bab,就匹配不到值 。因?yàn)閍的后面出現(xiàn)b這個(gè)字符了。
(?