正則表示式學習使用筆記整理
阿新 • • 發佈:2019-01-01
正則表示式一般來說分為正向正則表示式和逆向正則表示式
正則表示式可以實現字串匹配的功能,它採用一定的策略進行匹配,在有貪婪模式的情況下,正則會優先匹配能匹配的最大值,然後再以步退的模式向前迭代,直到整句正則表示式完全匹配為止,可以看出,在有貪婪模式的正則中,時間複雜度是比較高的,所以在匹配環境中最好避免大量使用貪婪模式。
正則表示式複雜度測試工具:
線上練習正則表示式:https://regex101.com/
1、匹配ip地址
ip地址最大的特點就是具有重複性,所以只需要確定某一個的正則就行,ipv4最大值為255,所以我們每一項都需匹配小於255的情況,於是正則轉換為 用正則實現小於等於255:
一位數和二位數 \d{1,2}
三位數:((1\d{2})|(2[0-4]\d)|(25[0-5]))
合起來就是 (^|\s)(((\d{1,2})|((1\d{2})|(2[0-4][0-9])|(25[0-5])))\.){3}((\d{1,2})|((1\d{2})|(2[0-4][0-9])|(25[0-5])))(\s|$)
2、任意值一般寫法
[a-zA-Z0-9_-]+
3、匹配首尾的寫法
(^|\s)(\s|$)
4、數字大小匹配
小於15: 不包含負數 (^|\s)(\d|(1[0-5]))(\s|$) 包含負數的版本 (^|\s)(\d|(1[0-5])|(-\d+))(\s|$) 大於90 (^|\s)(9[1-9]|\d{3,})(\s|$)
數字匹配列舉所有可能的情況就行了
5、| 語句的每一種並列的情況都需要單獨用括號括起來
錯誤例項
匹配配置 ospf shutdown , http shutdown , ssh shutdown 都可以
正則為:(^|\s)ospf|http|ssh\s+shutdown(\s|$)
匹配的結果為: ospf ,http,ssh shutdown
這樣的匹配結果跟 | 符號的優先順序有關,| 符號的優先順序比較低,+號比較高,所以ssh\s+shutdown會被認為是一起的,應該將上面的正則修改為
匹配配置 ospf shutdown , http shutdown , ssh shutdown 都可以 正則為:(^|\s)(ospf|http|ssh)\s+shutdown(\s|$) 匹配的結果為:ospf shutdown , http shutdown , ssh shutdown
6、一些特殊字元需要進行轉義
. => \.
+ => \+
- 不需要轉義 -
$ => \$
^ => \^