正则表达式,也称做“规则表达式”或“模式”,洋名是“Regular Expression”,
简称“regex"、“regexps”或“RE”。 在UNIX的许多工具程序中有着重要的地位,
因为它是在进行模式匹配时候强有力的表达语言。常见的工具程序如grep,sed,vi等;
另外在如perl等脚本语言中它的能力更是被倚重。
正则表达式是用来描述一组字符串的模式,它跟算术表达式类似——用运算符号把
更小的表达式组合起来。
一个正则表达式由几个“部分”组成,各个部分被“|”分隔;而每个部分由若干
“片”连接构成,需要先匹配第一片,接着匹配后面的各片。每片都有一个“原子”,
原子后面可有“*”、“+”、“?”或者“界限”等修饰。界限就是“{}”描述,
大括号中最多可以有两个由“,”分隔的十进制非负整数,整数的取值范围是:
0—RE_DUP_MAX(255)(含边界值)。
原子表达式有下面几种:
由()括起来的表达式 匹配这个表达式的内容
内部为空的() 匹配空串
[]表达式 匹配一个字符
. 匹配任一字符
^ 匹配行首的空串
$ 匹配行尾的空串
\后面跟 ^.[$()|*+?{\ 中的任一字符 把它们当做普通字符对待
\后面跟除上面这些外的其它任一字符 匹配任一普通字符,就跟\不存在一样
无特殊意义的单个字符 匹配它自身
{后面跟的不是数字 当做普通字符对待,不是界限的开始
正则表达式不能由\结尾。
正则表达式有两类语法:
一)基本的:
^ 放在表达式的开头,表示匹配一行的开头部分;
$ 放在表达式的结尾,表示匹配一行的末尾部分;
\< 在一个字的开始进行匹配;
\> 在一个字的末尾进行匹配;
. 匹配任何单个正文字符;
[str] 匹配str中的任何单个字符; 若想匹配],就得将它放在打头的位置
(前面还可以有^);
[^str] 匹配不在str中的任何单个字符; 若想匹配^,就别将它放在打头的位置;
[a-d] 匹配a到d之间的任一字符; 若想匹配-,就得将它放在开头或末尾,
若想让-作为前边界,用[.和.]括起来;
* 匹配前一个字符的0次或多次出现;
\ 忽略后面字符的特殊含义。
二)扩充的:
+ 对前一项进行1次或多次重复匹配;
? 对前一项进行0次或1次重复匹配;
{j} 对前一项进行j次重复匹配;
{j,} 对前一项进行至少j次重复匹配;
{,k} 对前一项进行至多k次重复匹配;
{j,k} 对前一项进行j到k次重复匹配;
s|t 匹配s项或t项中的一项;
(exp) 将exp作为单项处理。
还有一些较少的用法,可以参考 man 7 regex
阅读(2206) | 评论(0) | 转发(0) |