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