zoukankan      html  css  js  c++  java
  • Linux正则表达式

    正则表达示的组成:

    1. 一般字符:没有特殊意义的字符
    2. 特殊字符(meta字符):元字符,有在正则表达式中有特殊意义

    正则表达式中常见的meta字符

    1. POSIX BRE与ERE中都有的meta字符
      1. 通常用于打开或关闭后续字符的特殊含义,如(…)与{…} ;
      2. . 匹配任意单个字符(除NULL);
      3. * 匹配其前的任何数目或没有的单个字符,例:.表示任何一个字符,则.*匹配任一字符的任一长度;
      4. ^ 匹配紧接着的正则表达式,BRE中仅在正则表达式的开头有特殊含义,ERE中在任何位置都有特殊含义;
      5. $ 匹配前面的正则表达式,在字符串或者结尾处。BRE中仅在正则表达式的结尾处有特殊含义,ERE中在任何位置都有特殊含义;
      6. [] 匹配方括号内的任一字符,其中可用连字符(-)指连续字符的范围;^符号若出现在方括号的第一个位置,则表示匹配不在列表的任一字符;
    2. POSIX BRE中才有的字符
      1. {n,m}:区间表达式,匹配在它前面的单个字符重现的次数区别。{n}指重现n次;{n,m}指重现n至m次;
      2. ():保留空间,可以将最多9个独立的子模式存储在单个模式中。如(ab).*1:指匹配ab组合的两次重现,中间可存在任意数目的字符。
      3. :重复在()括号内第n个子模式至此点的模式;
    3. POSIX ERE中才有的字符
      1. {n,m}与BRE中的相同
      2. + 匹配前面正则表达式的一个或多个扩展
      3. ? 匹配前面正则表达式的零个或一个扩展
      4. | 匹配|符号前或后的正则表达式
      5. () 匹配()括起来的正则表达式群
    4. 字符集
      标识字符集有以下几种:

    [::alnum] : 数字字符

    [:digit:] : 数字字符

    [:punct:] : 标点符号字符

    [:alpha:] : 字母字符

    [:graph:] : 非空格字符

     [:space:] : 空格字符

    [:blank:] : 空格与定位字符

    [:lower:] : 小写字母字符

    [:upper:] : 大写字母字符

    [:cntrl:] : 控制字符

    [:print:] : 可显示的字符

    [:xdigit:] :

    [::alnum] : 数字字符

    [:digit:] : 数字字符

    [:punct:] : 标点符号字符

     

    案例一

    原文件url.txt中的内容如下:

    www.baidu.com

    http://www.baidu.com

    https://www.baidu.com

    http://wwwbaiducom

    baidu.com

    baidu

    要求:匹配以http或者https开头,并且其后为:并且含有.的串
    BRE匹配:

    Grep '^https{0,1}:.*..*' url.txt

    ERE匹配:
    grep –E '^https?:.*..*' url.txt

    案例二

    Email匹配

    原文件email.txt中的内容如下:

    Wangrx2015@sina.com

    aaa@

    aaa@.com

    aaa@gmail.com

    @@baidu.com

    要求:匹配以字母或数字开头或下划线开头,其后跟一个@之后有多个字母数字或者下划线,其中有一个.号

    Grep '^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*..*' email.txt

    注:本文引用于http://www.jb51.net/article/42989.htm

  • 相关阅读:
    在linux写一个shell脚本用maven git自动更新代码并且打包部署
    maven mvn 命令行 编译打包
    linux修改文件为可执行文件
    shell脚本中根据端口号kill对应的应用进程
    linux如何查看端口被哪个进程占用?
    LINUX中如何查看某个端口是否被占用
    The JAVA_HOME environment variable is not defined correctly的错误
    Linux配置Java环境变量
    requests
    https://www.cnblogs.com/zheting/category/1086753.html
  • 原文地址:https://www.cnblogs.com/wangrx/p/6017098.html
Copyright © 2011-2022 走看看