正則表達(dá)式 學(xué)習(xí)筆記
- 有多個(gè)字符串,其中一個(gè)字符串中包含部分內(nèi)容,匹配的到底什么?
答:匹配的是包含匹配內(nèi)容的那個(gè)字符串?還是只有匹配的內(nèi)容
Go Ahead~
從 hi hi 開始( \b ,\w , . , * )
這個(gè)正則匹配的內(nèi)容由兩個(gè)字符組成,前面的一個(gè)是 h ,后面的一個(gè)是 i 。
但是如果某個(gè)單詞后面還跟著其他字符串,這樣的單詞中包含的 hi 也會(huì)被匹配,比如說 his 。
如何只匹配單個(gè) hi ?
此時(shí)可以使用 \bhi\b ,\b 匹配如下位置
| 元字符 | 作用 |
|---|---|
b |
所匹配的位置,前一個(gè)字符和后一個(gè)字符不全是 w (用來匹配字母、數(shù)字、下劃線、漢字) |
如果需要匹配 hi 后面的不遠(yuǎn)處跟著 Lucy,比如說 hi ,this is Lucy. 可以使用 \bhi\b.*\bLucy\b 。
| 元字符 | 作用 |
|---|---|
. |
匹配除了換行符之外的任何字符 |
* |
用來指定這個(gè)元字符 * 前面的內(nèi)容可以連續(xù)重復(fù)使用任意多次,可以使得整個(gè)表達(dá)式得到匹配
|
上面的 . * 用來表示任何數(shù)量的字符,只要字符里邊不包括換行,于是 \bhi\b.*\bLucy\b 就表示先有個(gè)單詞 hi ,隔著很多沒有字符,中間沒有換行,之后有一個(gè)單詞 Lucy 。
電話號碼的匹配 ( \d , {n} )
0\d\d\d-\d\d\d\d\d\d\d\d 用來匹配 0 開頭,之后 3 位數(shù)字加 - ,之后 8 位數(shù)字的電話號碼。
使用這么多的 \d 是一件很讓人上頭的事情,可以使用這樣的寫法:0\d{3}-\d{8}。
| 元字符 | 作用 |
|---|---|
d |
匹配一位數(shù)字,比如 0 ,1 ,2 等任意的一位數(shù)字 |
{n} |
表示這個(gè)元字符 {n} 前面的內(nèi)容必須連續(xù)重復(fù)多少次 |
好多元字符
| 元字符 | 作用 |
|---|---|
/s |
匹配任意多的空白符 |
/w |
代表著可用文字,包含字母,數(shù)字,下劃線,漢字 |
/s |
匹配任意多的空白符 |
+ |
與 {n} ,* 類似,指定當(dāng)前元字符前面的內(nèi)容重復(fù)多次,+ 專指重復(fù) 1 次以上 |
現(xiàn)在好多內(nèi)容在講正則的時(shí)候都不注意區(qū)分哪些是核心內(nèi)容,在很多環(huán)境下,會(huì)對正則做出拓展,引入了很多新符號,引入了很多的復(fù)雜度??梢詤⒖歼@篇谷歌大牛的文章
編程珠璣番外篇-C.正則表達(dá)式精義-1
如果基礎(chǔ)扎實(shí)的話,有這篇文章
跟vczh看實(shí)例學(xué)編譯原理——零:序言
這是一個(gè)圖形化的在線正則展示網(wǎng)頁,可以用來測試正則
Regexper