1. 程式人生 > >正則表示式學習使用筆記整理

正則表示式學習使用筆記整理

正則表示式一般來說分為正向正則表示式和逆向正則表示式

正則表示式可以實現字串匹配的功能,它採用一定的策略進行匹配,在有貪婪模式的情況下,正則會優先匹配能匹配的最大值,然後再以步退的模式向前迭代,直到整句正則表示式完全匹配為止,可以看出,在有貪婪模式的正則中,時間複雜度是比較高的,所以在匹配環境中最好避免大量使用貪婪模式。

正則表示式複雜度測試工具:RegexBuddy4RegexBuddy 4
線上練習正則表示式: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、一些特殊字元需要進行轉義

. => \.
+ => \+
- 不需要轉義 -
$ => \$
^ => \^