Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305802
  • 博文数量: 54
  • 博客积分: 3050
  • 博客等级: 中校
  • 技术积分: 601
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-25 16:53
文章分类
文章存档

2012年(1)

2011年(7)

2010年(46)

我的朋友

分类: LINUX

2010-01-25 17:31:01

本来在 sed 里面写的,一不小心写多了,干脆拿出来单独一篇,可是又显得短哈。but Mike Gancarz 大佬在  《linux and the Unix Philosophy》里告诫我们:small is beautiful,make each program do one thing well.


------------------- 1. POSIX ERE 和 POSIX BRE 异同 --------------------

参考: (Classic shell scripting),又Google 到一个有用网址:

1. ERE 多出四个元字符: ?/+/|/(),()指分组,即允许多个字符作为一个单位,eg(why)+ 匹配一个
    或多个重复的 why.

2. ERE 不存在后向引用,即BRE 里"\(  \)  \digit" 形式的子表达式和后向引用,digit从1到9.

3. 锚点(anchor)(不得不说这翻译真别扭),其实就是 ^ and $ 元字符,在ERE里,这两个永远是元字符,在中间位置出现依然有效:eg. ab^cd 正确,只是匹配不到东西而已。在BRE 中这样为错误。

4. 区间表达式,在BRE 为:\{ \},在ERE 为:{ }.

5. BRE 和 ERE 各自运算符优先级:

   level ---- BRE       ---------------       ERE
-----------------------------------------------------------------
   1---  [..] [==] [::]    ----------  [..] [==] [::]           // 方括号符号 eg. [:alpha:]
   2---    \meta-character           \meta-character
   3---   []                    -----------   []                            // 方括号表达式 eg. [abc]ed
   4---   \( \)  \digit      -----------   ()                            // 子表达式(与后向引用)
   5---   *  \{ \}           -----------   * + ? {}                 // 区间表达式
   6---   无符号            -----------   无符号                     // 连续字符
   7---   ^ $                -----------   ^ $
   8---   无此level       -----------   |                            // ERE 的交替运算符
-----------------------------------------------------------------

除 POSIX版外,GNU版本正则表达式有一些额外的运算符: \w || \W || \< || \> || \b || \B || \' || \` 等,用于替代 POSIX 版本的 [:alnum:]之类和提供其他的便捷操作。

---------------------------------------- end 1 ------------------------------------
阅读(866) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~