一、介紹
正則表達式各語言都有自己的規范,但是基本都差不多,都是由元字符的組合來進行匹配;由于Nmap內嵌的服務與版本探測是使用的Perl正則規范,因此此篇博客記錄一下Perl正則的相關內容,方便后期查閱。
二、Perl正則例子
下面的例子可能有不足之處,有些來源于博客,沒有驗證;
1. 匹配IP地址:/d+/./d+/./d+/./d+
/d:匹配一個數字字符,/d+:匹配一次或多次數字字符。
/.:使用轉義字符匹配'.'。
2. 匹配郵箱類似于[email protected]: /^[a-zA-Z0-9_/-.]+@[a-zA-Z0-9_/-]+.[a-zA-Z]+$/
^: 匹配開頭
$: 匹配結尾,這兩個保證了這是連續的一串字符。
3. 匹配數字:m/^[0-9]+$/
由^開頭由$結尾保證了只含有數字,如果只有結尾$,那么abc12這種也是可以的。
可用在輸入校驗,校驗輸入的是否是數字。
4. 用戶輸入溫度(華氏溫度,攝氏溫度),編程進行轉換
m/^([-+]?[0-9]+)([CF])$/
:匹配正負整數溫度。
[CF]: 匹配中括號其中的一個
?:匹配前面的子表達式0次或1次
+:匹配前面的子表達式一次或多次
perl通過臨時變量$1,$2保存子表達式匹配的文本。$1保存的是數字,$2保存的是符號。
m/^([-+]?[0-9]+(?:/.[0-9]*)?)/s*([CF])$/i)
:添加支持小數的溫度匹配
臨時變量保存的順序與分組的開括號 ( 在表達式中的順序有關(從左到右);因此這個地方使用?:,代表該括號匹配的值不被臨時變量保存。
/i: 代表忽略大小寫匹配,cf也匹配。
參考地址:https://segmentfault.com/a/1190000004375773(精通正則表達式(第三版))
5. 匹配空白行
^$
: 開頭之后馬上結束:空白行,不包括任何字符
/n/s*/r
:
/n匹配一個換行符,等價于/x0a
/s匹配任何空白字符,包括空格制表換頁
/r匹配一個回車符,等價于/x0d
6. 匹配首尾空白字符: ^/s*|/s*$
7. 匹配版本號1.3.0等
[/d.]+
8. 匹配某個字符以外的所有字符:
新聞熱點
疑難解答