正则表达式

Regual Expression

由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字面意义,而是用于控制或通配的功能 分类

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

程序支持:grep, vim, less,nginx等

分两类:

基本正则表达式:BRE
扩展正则表达式:ERE
grep -E, egrep

正则表达式引擎:

采用不同算法,检查处理正则表达式的软件模块
PCRE(Perl Compatible Regular Expressions)

元字符分类:

字符匹配、匹配次数、位置锚定、分组

man 7 regex

基本正则表达式
扩展正则表达式

grep:文本过滤(模式:pattern)工具;

grep, egrep, fgrep(不支持正则表达式搜索)

sed:stream editor,文本编辑工具;

awk:Linux上的实现gawk,文本报告生成器;


二者区别元字符不同

grep:global search regular expression and print out the line

作用:文本搜索工具,根据用户指定的模式(过滤条件)对目标文本逐行匹配检查,打印匹配到的行
模式:有正则表达式的元字符及文本字符所编写出的过滤条件
    grep [OPTIONS] PATTERN [FILE...]
    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

    grep root /etc/passwd
    grep "$USER" /etc/passwd  #支持变量引用
    grep '$USER' /etc/passwd
    grep `whoami` /etc/passwd #支持命令引用

grep

常见选项:
--color=auto: 对匹配到的文本着色显示;
-v: 显示不能够被pattern匹配到的行;
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串;
-q: 静默模式,不输出任何信息
-A #:after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:实现多个选项间的逻辑or关系
    grep –e ‘cat ’ -e ‘dog’ file
-w:整行匹配整个单词
-E:使用ERE

egrep= grep -E

grep 要用PATTERN就要用引号把PATTERN引上。

正则表达式的元字符

字符匹配----单个字符

    .:点号匹配任意单个字符
    []:匹配指定范围内的任意单个字符
    [^]:匹配指定范围外的任意单个字符

    字符集合--代表集合中的所有字符
    Within  a bracket expression, the name of a character class enclosed in 
    "[:" and ":]" stands for the list of all characters belonging to
    that class.  Stan‐dard character class names are:

          alnum   digit   punct
          alpha   graph   space
          blank   lower   upper
          cntrl   print   xdigit

    字符集合在模式中必须为   [[:xxxx:]]  格式代表字符集中的一个

    字符集合与其他字符使用时[a[:xxxx:]b]      [^[:xxxx:]]  

        [:digit:],[:lower:],[:upper:],[:alpha:],[:punct:],[:space:],[:alnum:]



匹配次数-----------(正则表达式工作在贪婪模式下有多长匹配多长)用在要指定其出现的次数的字符的右侧,用户限制其前面字符出现的次数。

    *:  匹配其前面字符任意次--0,1或多次(可有可无或重复多次)
    .*  匹配任意长度的任意字符
    \?  匹配其前的字符0次或1次,即前面的字符可有可无
    \+  匹配其前面的字符1次或多次,即前面的字符出现至少一次

    \{m\}匹配其前面的字符m次,精确次数匹配
        \{m,n\}匹配前面的字符至少m次,至少n次
        \{0,n\}匹配前面的字符至多n次
        \{m,\}匹配前面的字符至少m次,多了不限

位置锚定---锚定整个patter

    ^:行首锚定;用于模式的最左侧
    $:行尾锚定;用模式的最右侧
    ^PATTERN$:用于匹配整行
    ^$:空白行锚定,没有任意字符(包括空白字符)
    ^[[:space:]]*$:空白行或包含空白字符的行

    单词:非特殊字符组成的------连续字符(的字符串包括数字)都称为单词

        \<或\b:词首锚定,用于单词模式的左侧
        \>或\b:词尾锚定,用于单词模式的右侧
        \<PATTERN\>匹配完整单词
        \bPATTERN\b

分组及引用 \(PATTER\)或\(指定的字符串\)
    \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理
    \(xy\)*ab
    xy出现0次1次或多次
    注:分组括号中的模式匹配到的内容,会被正则表达式引擎自动记录于内部的变量中,这些变量为
    \1
    \2
    \3
    ......
后向引用:
grep “\(l..e\)*\1”
引用前面的分组括号中的模式所匹配到的字符

扩展正则表达式的元字符

字符匹配
    .:任意单个字符
    []:指定范围内的任意单个字符
    [^]:指定范围外的任意单个字符
    次数匹配
    *:任意次0,1或多次
    ?:0次或1次
    {m}匹配其前字符m次
    {m,n}:匹配其前字符最少m次,最多n次
    {0,m}:匹配其前字符最多m次
    {m,}:匹配最少m次
位置锚定
    ^:行首锚定
    $:行尾锚定
    \<:词首锚定
    \>:词尾锚定
或
    a|b  整个右侧或左侧
    C|cat   C或cat
    (C|c)at     Cat或cat

分组及引用:
    ():分组
        后向引用:
        \1
        \2
        \3

grep

支持基本正则表达式
-E支持扩展正则表达式
-F不使用正则表达式

egrep

支持扩展正则表达式
-G支持基本正则表达式
-F不使用正则表达式

fgrep

当无需要用到元字符去编写模式时,使用fgrep性能更好

不支持正则表达式
-E支持扩展正则表达式
-G支持基本正则表达式

原创文章,作者:yyw,如若转载,请注明出处:http://www.178linux.com/30407

(0)
yywyyw
上一篇 2016-08-07
下一篇 2016-08-07

相关推荐

  • N26-第一周博客作业

    一:计算机的组成及其功能  1.运算器(CPU) 对数据进行各种运算;  2.控制器(CPU) 用来控制整个计算机操作系统;  3.存储器 内存(RAM)存储程序和各种数据信息;  4.输入装置 (Input)下达指令,提供数据,常见的输入装置有鼠标,键盘等;  5.输出设备 (Output)输出数据加工后的…

    Linux干货 2016-12-31
  • 计算机网络基础

    计算机网络 指使用一定的通信线路,把地理位置上相对分散的、具有独立自制能力的计算机系统等连接起来,在一定通信协议的约束与控制下,实现数据交换的目的! 计算机网络体系结构 计算机网络体系结构是一个分层次的模块式结构,每一层完成一个功能,这种流式化的结构能提高生产力!网络分层的好处 促进了标准化 各层次相互独立,技术升级和扩展灵活性好 便于方案的设计 开放系统互…

    Linux干货 2016-09-06
  • shell 编程(一)

    shell脚本编程:  编程语言的分类:根据运行方式    编程运行:源代码->编译器(编译)--程序文件    解释运行:源代码-->运行启动时解释,由解释器边解释运行; 根据其编程过程中功能的实现是调用库还是调用外部的程序文件:   shell脚本编程:      利用系统上的命令编程组件进行编程:   完整的编程:     利用库或编程组件进行编程; …

    Linux干货 2016-12-23
  • Shell脚本编程 流程控制—循环

    循环:重复执行所指定的代码片段,直到循环条件不满足,则退出循环 一、for循环     语法格式:     for 变量名 in 列表     do         循环体     done &nbs…

    Linux干货 2016-08-24
  • 系统基础之vim工具详解

    vim工具详解 作为运维人员,每天要面对大量的文件操作,如何使用一个功能强大,操作快捷的文本编辑器,就至关重要.那天,今天给大家详细的介绍下vim这款编辑器,完全符合我们的要求,下面让我们一起来看看吧! 概论:  文本编辑器:  文本:纯文本信息,   ASCII text:  纯粹的,不加修饰的文字  文本…

    Linux干货 2016-08-10
  • 网络管理

    网络概念 网络应用程序 Web 浏览器(Chrome、IE、Firefox等) 即时消息(QQ、微信、钉钉等) 电子邮件(Outlook、foxmail 等) 协作(视频会议、VNC、Netmeeting、WebEx 等) web网络服务(apache,nginx,IIS) 文件网络服务(ftp,nfs,samba) 数据库服务( MySQL,MariaDB…

    Linux干货 2017-05-06