關鍵詞:正則表達式
正則表達式是一種特殊的字符串模式,用于匹配一組字符串
元字符
字符 | 釋義 |
---|---|
"^" | ^會匹配行或者字符串的起始位置,有時還會匹配整個文檔的起始位置。 |
"$" | $會匹配行或字符串的結尾 |
"\b" | 不會消耗任何字符只匹配一個位置,常用于匹配單詞邊界 |
"\d" | 匹配數字, |
"\w" | 匹配字母,數字,下劃線. |
"\s" | 匹配空格 |
"." | 匹配除了換行符以外的任何字符這個算是"\w"的加強版"\w"不能匹配空格 |
"[abc]" | 字符組匹配包含括號內元素的字符 還可以寫成[a-z] |
"\W" | 匹配任意不是字母,數字,下劃線 的字符 |
"\S" | 匹配任意不是空白符的字符 |
"\D" | 匹配任意非數字的字符 |
"\B" | 匹配不是單詞開頭或結束的位置 |
[^abc] | 匹配除了abc以外的任意字符 |
量詞
關于量詞所涉及到的重要的三個概念
1.貪婪: 如"*"字符
貪婪量詞會首先匹配整個字符串,嘗試匹配時,它會選定盡可能多的內容,如果失敗則回退一個字符,然后再次嘗試回退的過程就叫做回溯
,它會每次回退一個字符,直到找到匹配的內容或者沒有字符可以回退。
這種方法對資源消耗很大
2.懶惰:如 "?"
它從目標的起始位置開始嘗試匹配,每次檢查一個字符,并尋找它要匹配的內容,如此循環直到字符結尾處。
3.占有:如"+"
占有量詞會覆蓋事個目標字符串,然后嘗試尋找匹配內容 ,但它只嘗試一次,不會回溯
字符 | 釋義 |
---|---|
"*"(貪婪) | 重復零次或更多 |
"+"(懶惰) | 重復一次或更多次 |
"?"(占有) | 重復零次或一次 |
{n}" | 重復n次 |
{n,m}" | 重復n到m次 |
"{n,}" | 重復n次或更多次 |
懶惰限定符
字符 | 釋義 |
---|---|
"*?" | 重復任意次,但盡可能少重復 如 "acbacb" 正則 "a.*?b" 只會取到第一個"acb" |
"+?" | 重復1次或更多次,但盡可能少重復,與上面一樣,只是至少要重復1次 |
"??" | 重復0次或1次,但盡可能少重復,如 "aaacb" 正則 "a.??b" 只會取到最后的三個字符"acb" |
"{n,m}?" | 重復n到m次,但盡可能少重復,如 "aaaaaaaa" 正則 "a{0,m}" 因為最少是0次所以取到結果為空 |
"{n,}?" | 重復n次以上,但盡可能少重復,如 "aaaaaaa" 正則 "a{1,}" 最少是1次所以取到結果為 "a" |