Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3432905
  • 博文数量: 754
  • 博客积分: 10132
  • 博客等级: 上将
  • 技术积分: 7780
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:36
文章分类

全部博文(754)

文章存档

2012年(3)

2011年(39)

2010年(66)

2009年(167)

2008年(479)

我的朋友

分类: LINUX

2008-11-19 14:51:22

  • 正则表达式,也称做“规则表达式”或“模式”,洋名是“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) |
    给主人留下些什么吧!~~