Linux正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:重复在\(\)括号内第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中的内容如下:

[email protected]

[email protected]

[email protected]

[email protected]

@@baidu.com

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

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

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




以上是关于Linux正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Linux正则表达式教程:Grep Regex示例

Linux正则表达式及grep命令

linux-正则表达式

linux正则表达式

linux 中 ^[^abc] 正则表达式啥意思

Linux 基础正则表达式