zoukankan      html  css  js  c++  java
  • linux正则表达式基础

    linux中awk,sed,grep等 命令使用区别正则表达式基础

    在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式"testing"中没有包含任何元字符,,它可以匹 配"testing"和"123testing"等字符串,但是不能匹配"Testing"。

    要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。
    元字符 描述




    .
    匹配任何单个字符。例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root。
    $
    匹配行结束符。例如正则表达式weasel$能够匹配字符串"He's a weasel"的末尾,但是不能匹配字符串"They are a bunch of weasels."。
    ^
    匹配一行的开始。例如正则表达式^When in能够匹配字符串"When in the course of human events"的开始,但是不能匹配"What and When in the"。
    *
    匹配0或多个正好在它之前的那个字符。例如正则表达式.*意味着能够匹 配任意数量的任何字符。

    这是引用府,用来将这里列出的这些元字符当作普通的字符来进行匹配。例如正则表达式$被 用来匹配美元符号,而不是行尾,类似的,正则表达式.用 来匹配点字符,而不是任何字符的通配符。
    [ ]
    [c1-c2]
    [^c1-c2]
    匹配括号中的任何一个字符。例如正则表达式r[aou]t匹配rat、rot和rut, 但是不匹配ret。可以在括号中使用连字符-来指定字符的区间,例如正则表达式[0-9]可 以匹配任何数字字符;还可以制定多个区间,例如正则表达式[A-Za-z]可以 匹配任何大小写字母。另一个重要的用法是“排除”,要想匹配除了指定区间之外的字符——也就是所谓的补集——在左边的括号和第一个字符之间 使用^字符,例如正则表达式[^269A-Z]将匹配除了2、6、9和所有大写字母之外的任何字符。
    < >
    匹配词(word)的开始(<)和结束(>)。例如正则表达式
    ( )
    将 ( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达 式中最多可以保存9个),它们可以用1到9的符号来引用。
    |
    将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her)匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:这个元字符不是所有的软件都支持的。
    +
    匹配1或多个正好在它之前的那个字符。例如正则表达式9+匹配9、 99、999等。注意:这个元字符不是所有的软件都支持的。
    ?
    匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。
    {i}
    {i,j}
    匹配指定数目的字符,这些字符是在它之前的表达式定义的。例如正则表达式A[0-9]{3}能够匹配字符"A"后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A1234。而正则表达式[0-9]{4,6}匹配连续的任意4个、5个或者6个数字字符。注 意:这个元字符不是所有的软件都支持的。

    正则表达式语法支持情况 

    命令或环境 . [ ] ^ $ ( ) { } ? + | ( )
    vi                    
    Visual C++                    
    awk                    
    sed                    
    Tcl                    
    ex                    
    grep                    
    egrep    X                
    fgrep                    
    perl  X  X  X  X  X    X  X  X  X

    个人比较喜欢用awk,但是awk是不支持的 () {} 的。不能强求。(可以用sed配合)
    说明下 | 的用法,匹配多个正则式或者的关系。
    awk '{if ($1 ~ /abc|123/)print $1}'
    如果$1是abc或者是123就打印出来

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    网络测量中基于Sketch方法的简单介绍
    Reading SBAR SDN flow-Based monitoring and Application Recognition
    Reading Meticulous Measurement of Control Packets in SDN
    Reading SketchVisor Robust Network Measurement for Sofeware Packet Processing
    ovs加dpdk在日志中查看更多运行细节的方法
    后缀数组
    (转载)LCA问题的Tarjan算法
    Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A. Checking the Calendar(水题)
    Vijos 1816统计数字(计数排序)
    卡特兰数
  • 原文地址:https://www.cnblogs.com/jamesf/p/4751622.html
Copyright © 2011-2022 走看看