正则表达在脚本编程中使用的非常多,正则表达式是一些特殊或不很特殊的字符串模式的集合。
基本元字符集及含义:
^ 只匹配行首
$ 只匹配行尾
* 一个字符后跟*,代表匹配0个或多个单字符
[] 匹配[]内的字符,可以是一个单字符,也可是字符序列,可以使用—表示字符序列内的范围,例如:[1-5]可以代替[12345]
\ 可以屏蔽某些元字符的特殊含义,即\ 可以使有特殊含义的字符当成普通字符
. 匹配任意单字符
pattern\{n\} 匹配前面pattern出现的次数,n为次数
pattern\{n,\}m 同上,但是次数是最少为n
pattern\{n,m\} 同上,但是次数是在nm之间
注意,^$代表匹配空行
^.$代表配置只包含一个字符的行
\屏蔽特殊字符的特殊含义举例:
假定匹配包含“.”的行,则要这样写:\.
假定匹配包含“^”的行,则:\^
假定匹配以*.pass结尾的文件,可以这么写:\*\.pass
[] 匹配[]内字符的使用举例:
匹配任意数字,可以使用[0-9]来表示
匹配任意小写字母,可以使用[a-z]
匹配任意字母,则使用[A-Za-z]表示
注意^的使用,当直接用在第一个括号内表示否定或不匹配括号里的内容
[^a-zA-Z]匹配任意非字母型字符
[^0-9]匹配任意非数字
常用正则表达举例:
[^.*$] 匹配行中任意字符串
^......$ 匹配包含6个字符的行
[a-z][a-z]* 至少一个小写字母
[^0-9\$] 非数字或美元符
[^0-9A-Za-z] 非数字或字母
[123] 1到3中的任意一个数
De..ce 前两个字符是De后面跟两个任意字符,最后为ce
\^q 以q开始的行
^.$ 只有一个字符的行
^.[0-9][0-9] 以一个.和两个数字开头的行
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\} 日期格式为dd-mm-yyyy
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}.[0-9]\{3\} ip地址格式nnn.nnn.nnn.nnn
[^.*$] 匹配任意行