1. 程式人生 > >正則表達式知識補漏

正則表達式知識補漏

標識 window strong 一個點 asc 貪婪 scrip trie 而不是

0、括號的用法:

a、將( 和 ) 之間的表達式定義為“組”(group),並且將匹配這個表達式的字符保存到一個臨時區域。一個正則表達式中最多可以保存9個組。

b、匹配括號需要轉義;

1、大括號的用法:

a、大括號前面有要匹配的字符,且大括號裏面有數字或逗號+數字或數字 +逗號+數字的組合時,表示量詞;

b、除作為量詞分界標誌的情況外,大括號只是一個普通的匹配字符,把它用作普通匹配字符時,不需要轉義。

2、中括號的用法:

a、中括號裏面可以放任意個匹配字符,表示一個匹配字符集合,匹配時一次只匹配該集合中的一個字符;

b、中括號裏面不帶反斜杠的元字符會被視作普通匹配字符,而不需要特別轉義,例如 . 將被視為一個點,而不是除制表和空格外的所有字符,但\d將會被視為數字集合;

c、中括號裏面的量詞將會被視為普通匹配字符,因為中括號裏面的量詞無意義,例如 [ \d+? ] 裏面的+號和?號只是作為普通匹配字符,而不會被視為量詞 ;

d、^字符只有放在中括號裏才表示取反集合,其他情況下表示以某匹配字符或匹配字符組合開頭;

e、匹配中括號需要轉義。

3、量詞就近修飾原則:

a、量詞只修飾最靠近量詞左邊的匹配字符或者匹配字符集合(以中括號標識)或字符組(以括號標識);

4、貪婪和非貪婪模式:

a、JavaScript中的量詞均執行貪婪匹配,量詞後面加問號?表示非貪婪匹配;

5、全局匹配:

a、正則表達式後面加g表示全局匹配;

b、正則表達式後面加i表示忽略大小寫;

6、正則表達式的或:

a、| 或表示幾個中任意一個符合即可;

7、正則預查:

a、正向肯定預查(?=pattern),例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始。;

b、正向否定預查(?!pattern),例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。;

c、反向肯定預查(?<=pattern),例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。;

d、非獲取匹配(?:pattern),匹配pattern但不獲取匹配結果,不進行存儲供以後使用。這在使用或字符“(|)”來組合一個模式的各個部分時很有用。例如“industr(?:y|ies)”就是一個比“industry|industries”更簡略的表達式。

正則表達式知識補漏