^ $ * + ? { } [ ] \ | ( ) . -
等為正則表達式的保留字元
javascript 的保留字多 /
------------------------------ ------------------------------ ------
等為正則表達式的保留字元
javascript 的保留字多 /
------------------------------
\d : [0-9]
\w : [A-Za-z0-9_](不含中文)
\s : 空白, 換行
\n : 換行
\b : 詞邊界
------------------------------ ------------------------------ ------
\D vs \d
\W vs \w
\s vs \S
\b vs \B
\b => \w頭尾兩端的(\W)
\b => \w頭尾兩端的(\W)
------------------------------ ------------------------------ ------
{0, m} : 前一字元匹配 0 到 n 次
{n, } : 前一字元匹配 n 到 無限 次
------------------------------ ------------------------------ ------
? : 匹配 0-1 次
* : 匹配 0- 次
+ : 匹配 1- 次
------------------------------ ------------------------------ ------
[CD][a-z]+ = (C|D)[a-z]+ = [CD]{1}[a-z]+
/(http.*\\\\.*|http.*\/\/.*)/ ==> 匹配 /http.*\\\\.*/ or /http.*\/\/.*/
(gray|grey) = gr(a|e)y = gr[ae]y
------------------------------ ------------------------------ ------
重複匹配
/(.)(.) \2\1/ => AD DA
------------------------------ ------------------------------ ------
(0 | 1 | 2 | 3 | 4 | 5 ) = [ 0 1 2 3 4 5 ]
------------------------------ ------------------------------ ------
向前查找>>
XXX(?=YYY) ==> XXX 後面要有 YYY 但只有 XXX會被取代
否定向前查找>>
XXX(?!YYY)
向後查找>>
(?<=YYY)XXX ==> XXX 前面要有 YYY 但只有 XXX會被取代
否定向後查找>>
否定向後查找>>
(?<!YYY)XXX
------------------------------ ------------------------------ ------
關閉貪婪搜尋有用的情況:
=> 有兩個以上的長度條件下,去選擇是否採貪婪搜尋
如
*
+
{n,m}
------------------------------ ------------------------------ ------
預設搜索是貪婪法,如 {n, m} => 優先搜索 m 次有符合就放棄
{n, m}? 則是惰性匹配 => 搜索 n 次有搜索到就放棄
------------------------------ ------------------------------ ------
Exp 1>>
(
<hhhh><ggg><hhhh><ggg>
)
(( /<.{4,20}>/ ==> (匹配) array('<hhhh><ggg><hhhh><ggg>' ) ))
==>貪婪搜索會用最大化搜尋
1.當搜尋過第一個字'<'後,到了.{4,20}會先取{4, 20}中最大的 20 來找
2.若20個任意字後面要跟'>'沒找到, 就遞減搜尋直到4個任意字後面有跟'>'
(( /<.{4,20}?>/ ==> (匹配)<hhhh> ))
==>若取消貪婪搜尋
1.當搜尋過第一個字'<'後,到了.{4,20}會先取{4, 20}中最小的 4 來找
2.找到'<hhhh>'
3.剩下'<ggg><hhhh><ggg>'
4.重頭再用'/<.{4,20}?>/'匹配剩下的'< ggg><hhhh><ggg>'
------------------------------ ------------------------------ ------
Exp 2>>
(
<html><head><title></title></ head><body></body></html>
)
/<.*>/ ==> all
/<.*?>/ ==> <html>.........
------------------------------ ------------------------------ ------
Exp 3>>
(
255.255.256.255
)
A => /(.{3}\.|.{3}(?=\.))/
B => /(.{3}(?=\.)|.{3}\.)/
A.B都是再檢查4個字與差不多條件.... 但順序不同結果也不同
規則是由左到右
沒有留言:
不接受新意見。