正则表达示的组成:

  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. 【总结】浅谈JavaScript中的接口

    一.什么是接口 接口是面向对象JavaScript程序员的工具箱中最有用的工具之一.在设计模式中提出的可重用的面向对象设计的原则之一就是“针对接口编程而不是实现编程”,即我们所说的面向接口编程,这个概 ...

  2. 5 HTML&JS等前端知识系列之jquery基础

    preface jquery其实就是对javascript的再次封装,方便我们开发者调用,下载地址是:http://jquery.com/download/ ,下面就说说常用使用方法 选择器 基本选择 ...

  3. HD3033I love sneakers!(分组背包+不懂)

    I love sneakers! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. vue-router2使用

    条件:紧接前面vue.js开发环境搭建 1.在cmd输入:npm install vue-router,回车,等待,安装对应版本router: 2.在入口文件用 import vueRouter fr ...

  5. U盘存放大于4G数据文件且无须格式化U盘的解决方法

    现在优盘的容量越来越大了,价格越来越便宜,可是它也有个缺点,因为它默认的文件系统是"FAT32",这种文件系统最大只能保存4G的文件,超过4G的文件就不能保存在优盘上了,这样就不能 ...

  6. Python 下载 tushare 数据,然后调用 C++ DLL 计算 wMA 存入本地 csv 文件再 python 读取

    CMakeLists.txt project(wMA) add_library(wMA SHARED wMA.cpp) wMA.h #pragma once #ifndef WMA_WMA_H #de ...

  7. css水平垂直居中对齐方式

    1.文字或者内联元素的垂直水平居中对齐 css属性 -- 水平居中:text-aligin:center; 垂直居中: line-height:height; 例子:. html: <div c ...

  8. TinyFox/Jexus如何正确使用配置文件

    一.阅读须知 1.TinyFox是什么 Tinyfox3.x 将支持多站点多域名 2.Jexus是什么 二.使用问题解答 * 问题1.发布Owin项目到Win/Centos系统下的TinyFox上时, ...

  9. easyui如何动态改变列的编辑属性

    动态改变列的编辑属性 var tt=$('#dg').datagrid('getColumnOption', 'yearContent'); //通过列名获得此列 tt.editor={type:'t ...

  10. JavaScript 构造函数与原型链

    构造函数.原型链: function Person(name, age, job) { this.name = name; this.age = age; this.job = job; // thi ...