zoukankan      html  css  js  c++  java
  • 3.2.5 程序与正则表达式

        有两种不同的正则表达式风格时经年累月的历史产物。虽然 egrep 风格的扩展正则表达式在 UNIX 早期开发时就已经存在了,但 Ken Thompson 并不觉得有必要在 ed 编辑器里使用这样全方位的正则表达式。
     
        ed 的程序代码后来成了 grep 的基础(grep 为 ed 命令中 g/re/p 的缩写,意即全局性匹配 re,并将其打印)。ed 的程序代码后来也成为初始构建 sed 的根基。
     
        就在 pre-V7 时期, Al Aho 创造了 egrep ,Al Aho 是贝尔实验室的研究人员,他为正则表达式匹配于语言解析的研究奠定了基础。egrep里的核心匹配程序代码,日后也被 awk 的正则表达式拿来使用。
     
        < 与 > 运算符起源于滑铁卢大学的 Rob Pike、Tom Duff、Hugh Redelmeier,以及 David Tilbrook 所修改的 ed 版本。Bill Joy 在 UCB 时,便将这两个运算符纳入 ex 与 vi 编辑器,自那时起,它就广为流传。
     
        UNIX 程序及其正则表达式类型
     
    类型 grep sed ed ex/vi more egrep awk lex
    BRE                
    ERE                
    <  >                
     
        正如我们再本章开头所提到的:要(试图)解决多个 grep 的矛盾,POSIX 决定以单个 grep 程序解决。POSIX 的 grep 默认行为模式使用的是 BRE。加上 -E 选项则它使用 ERE ,及加上 -F 选项,则它使用 fgrep 的固定字符串匹配算法。因此,真正地遵循 POSIX 的程序以 gerp -E ... 取代 egrep ...。不过,因为所有的 UNIX 系统确实拥有它,且可能已经有许多年了,所以我们继续在自己的脚本中使用它。
     
        最后要注意的一点就是:通常,awk 在其扩展正则表达式里不支持区间表达式。直至2005年,各种不同厂商的 awk 版本也并非全面支持区间表达式。为了让程序具有可移植性,若需要在 awk 程序里匹配大方括号,应该以反斜杠转义它,或将它们括在方括号表达式里。
        
  • 相关阅读:
    A Node Influence Based Label Propagation Algorithm for Community detection in networks 文章算法实现的疑问
    Fast Newman-FN算法以及模块度定义介绍
    Label Propagation Algorithm LPA 标签传播算法解析及matlab代码实现
    设计一个smartnic
    Intel GEN11 GPU
    Intel GEN9 GPU
    Shared Virtual Memory (SVM) Functions
    connect via ssh to virtualbox guest vm without knowing ip address
    smartnic
    技术精品翻译
  • 原文地址:https://www.cnblogs.com/avention/p/10307144.html
Copyright © 2011-2022 走看看