正则表达示的组成:

  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:重复在\(\)括号内第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正则表达式的更多相关文章

  1. linux正则表达式之-基础正则表达式(基于grep)

    linux正则表达式: 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法,如:假设@代表123456,!代表abcde.通过定义的这些特殊符号的铺助,系统管理员就可以快速的过滤,替换或 ...

  2. 关于清晰讲解linux正则表达式的博文分享

    http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html  linux shell 正则表达式(BREs,EREs,PREs)差异比 ...

  3. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  4. 【Linux】linux正则表达式及通配符

    正则表达式就是用于匹配每行输入的一种模式,模式是指一串字符序列.拥有强大的字符搜索功能.也非常方便的搜索过滤出我们想要的内容. linux正则表达式分为基本正则表达式(Basic Regexp)和扩展 ...

  5. Linux 正则表达式_010

    Linux 正则表达式 标注:本教程只针对linux运维的三剑客命令awk,sed,grep正则表达式 什么是正则表达式? 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法通过定义的这 ...

  6. linux正则表达式(基础正则表达式+扩展正则表达式)

    正则表达式应用非常广泛,例如:php,Python,java等,但在linux中最常用的正则表达式的命令就是grep(egrep),sed,awk等,换句话 说linux三剑客要想能工作的更高效,就一 ...

  7. linux 正则表达式和通配符

    linux 正则表达式和通配符 通配符用于查找文件 包含三种:  * ? [] * 代表任意个任意字符 ? 代表任意一个字符 [] 代表中括号中的一个字符 正则表达式(正则是包含匹配,只要包含就可以匹 ...

  8. 七 、linux正则表达式

    为处理大量的字符串而定义的一套规则和方法 1)linux正则表达式以行为单位处理 2)alians grep = “grep –color=auto”,让匹配的内容显示颜色 3)注意字符集,expor ...

  9. (转)linux正则表达式详解

    linux正则表达式详解 http://blog.csdn.net/wuliowen/article/details/64131815 1:什么是正则表达式: 简单的说,正则表达式就是处理字符串的方法 ...

  10. linux正则表达式企业级深度实践案例1

    linux正则表达式结合三剑客企业级实践: 1.取系统ip [root@redhat~]#  ifconfig  eth0 解答: 替换命令: sed  's#支持正则位置##g'  file 先取第 ...

随机推荐

  1. 在不损坏C盘的情况下为C盘扩容,适用于Win

    2016年12月29日14:29:27 参考原文:http://jingyan.baidu.com/article/90808022a6c6b7fd91c80fc8.html 在不损坏磁盘的情况下给某 ...

  2. Bitmap转换成BitmapImage

    public BitmapImage BitmapToBitmapImage(System.Drawing.Bitmap bitmap) { MemoryStream ms = new MemoryS ...

  3. 配置LVS + Keepalived高可用负载均衡集群之图文教程

    负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性.  重点:每个节点时间都同步哈! C++代码 [r ...

  4. maven 加入json-lib.jar 报错 Missing artifact net.sf.json-lib:json-lib:jar:2.4:compile

    <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</art ...

  5. sdk开发时,对外暴露的接口封装

    思考,用同步还是异步? 实质就是屏蔽一些东西,让使用者直接传参数 拿结果 而不用关心具体实现 eg.登陆接口 1.定义接口LoginCallBack,两个函数 请求成功和失败 public inter ...

  6. mysql复习相关

    Mysql相关 mysql增删改查 我们需要修改数据表名或者修改数据表字段时,就需要使用到Mysql Alter命令 删除,添加或修改表字段 alter table student drop regi ...

  7. thinkphp疑难解决4

    关于文件上传所涉及到的php.ini 中的一些配置: (以当前要设置的关键字开头...) 是每个上传文件所允许的大小, 默认的 upload_max_filesize = 2M, 如果超过了2M,_P ...

  8. Mysql基础(一)

    Mysql的历史度娘上一堆,就不再介绍了. 本文依照此路径学习Mysql数据库:数据库->表->数据 首先启动Mysql服务,然后通过控制台命令登入root账户输入密码回车 C:\User ...

  9. table隔行变色

    table tr:nth-child(2n) {         background: #EEF8F0;     }     table tr:nth-child(2n+1) {         b ...

  10. linux 复 带进度条

    rsync命令 #rsync -av --progress /mnt/yidong2/full20100526.tar.gz /mnt/yidong1/ 可以实现本机带进度条提示拷贝,可以实现不同机器 ...