zoukankan      html  css  js  c++  java
  • Linux环境下常用regexp的使用

    正则表达式

    REGular EXPression   的简写
    元字符

    匹配次数

    位置锚定

    分组

    --------------------------------------
    元字符
    . 匹配任意单个字符

    [] 匹配指定范围内任意单个字符


    [^] 匹配指定范围外的
    [:space:] 空白字符
    [:punct:] 标点字符
    [:lower:] 小写字母
    [:upper:] 大写字母
    [:alpha:] 大小写字母
    [:digit:] 数字
    [:alnum:] 数字和大小写字母


    匹配次数(贪婪模式)

    * 匹配其前面的字符任意次
    a*b b前面a出现任意次数
    a.*b a开头b结束
    .* 任意长度任意字符

    ? 匹配其前面的字符1次或0次 意思是这个字符可有可无
    a?b
    {m,n} 匹配其前面的字符至少m次 至多n次
    {1,} 至少一次
    {,3} 至多3次
    a.{1,3}b a和b之间至少有一个最多有三个字符

    位置锚定

    ^ 锚定行首 此字符后面的任意内容必须出现在行首

    $ 锚定行尾 此字符前面的任意内容必须出现在行尾
    grep 'b..h$' /etc/passwd
    ^$ 空白行
    < 其后面的任意字符必须作为单词首部出现
    > 其前面的任意字符必须作为单词尾部出现 这个符号的另一种写法


    分组
    ()
    (ab)* ab 可以出现任意次
    1 第一个左括号以及与之对应的组内容

    grep '(l..e).*1' test3.txt


    练习: 分析/etc/inittab 文件中如下文本中前两行的特征(每一行中出现在数字必须相同)请写出可以精确找到类似两行的模式
    11:1:wait:/etc/rc.d/rc 1

    13:1:wait:/etc/rc.d/rc 3

    grep '^1([0-9]):1.*1$' /etc/inittab

    grep 使用基本正则表达式定义的模式来过滤文本的命令


    ----------------------------------------------------
    扩展正则表达式

    字符匹配
    . [] [^]

    次数匹配
    *
    ? 无需反斜杠了
    + 匹配其前面的字符至少一次 {1,}
    {m,n} 不需要反斜线

    位置锚定
    ^
    $
    <
    >

    分组
    () 不用反斜杠
    1,2

    或者
    a|b or的意思
    C|cat 整个左边和右边
    Cat或者cat 错
    C或者cat 对

    grep -E 'C|cat' text.txx

    {3}重复三次

    fgrep 不支持正则表达式 特别快

  • 相关阅读:
    MySpace的六次重构
    为SQL Server 2005启用对 4 GB 以上物理内存的支持
    MyBatis拦截器自定义分页插件实现
    SpringBoot中快速实现邮箱发送
    2010全面兼容IE6IE7IE8FF的CSS HACK写法
    详细的win2003 IIS6.0 301重定向带参数的问题(实现网站的整体301跳转)
    call和apply方法
    offsetLeft、clientHeight、scrollLeft、clientLeft
    JS中的escape() & encodeURI() & encodeURIComponent() 区别
    俺的分布式架构系统之计算机网络1
  • 原文地址:https://www.cnblogs.com/manue1/p/4477178.html
Copyright © 2011-2022 走看看