一、介绍
正则表达式各语言都有自己的规范,但是基本都差不多,都是由元字符的组合来进行匹配;由于Nmap内嵌的服务与版本探测是使用的Perl正则规范,因此此篇博客记录一下Perl正则的相关内容,方便后期查阅。
二、Perl正则例子
下面的例子可能有不足之处,有些来源于博客,没有验证;
1. 匹配IP地址:/d+/./d+/./d+/./d+
/d:匹配一个数字字符,/d+:匹配一次或多次数字字符。
/.:使用转义字符匹配'.'。
2. 匹配邮箱类似于123456@qq.com: /^[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. 匹配某个字符以外的所有字符:
新闻热点
疑难解答