当前位置:  编程技术>其它

linux shell 正则表达式(BREs,EREs,PREs)差异比较

    来源: 互联网  发布时间:2014-10-18

    本文导语:  在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利...

在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。这些是正则表达式的定义。 由于起源于unix系统,因此很多语法规则一样的。但是随着逐渐发展,后来扩展出以下几个类型。了解这些对于学习正则表达式。

一、正则表达式分类:

1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx  简称 BREs)
2、扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)
3、Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)

说明:只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法

二、Linux 中常用文本工具与正则表达式的关系 

常握 Linux 下几种常用文本工具的特点,对于我们更好的使用正则表达式是很有帮助的

grep , egrep 正则表达式特点:

代码如下:

1)grep 支持:BREs、EREs、PREs 正则表达式
grep 指令后不跟任何参数,则表示要使用 ”BREs“ 
grep 指令后跟 ”-E" 参数,则表示要使用 “EREs“
grep 指令后跟 “-P" 参数,则表示要使用 “PREs"

2)egrep 支持:EREs、PREs 正则表达式
egrep 指令后不跟任何参数,则表示要使用 “EREs”
egrep 指令后跟 “-P" 参数,则表示要使用 “PREs"

3)grep 与 egrep 正则匹配文件,处理文件方法
a. grep 与 egrep 的处理对象:文本文件
b. grep 与 egrep 的处理过程:查找文本文件中是否含要查找的 “关键字”(关键字可以是正则表达式) ,如果含有要查找的 ”关健字“,那么默认返回该文本文件中包含该”关健字“的该行的内容,并在标准输出中显示出来,除非使用了“>" 重定向符号,
c. grep 与 egrep 在处理文本文件时,是按行处理的

sed 正则表达式特点

代码如下:

1)sed 文本工具支持:BREs、EREs
sed 指令默认是使用"BREs"
sed 命令参数 “-r ” ,则表示要使用“EREs"
2)sed 功能与作用
a. sed 处理的对象:文本文件
b. sed 处理操作:对文本文件的内容进行 --- 查找、替换、删除、增加等操作
c. sed 在处理文本文件的时候,也是按行处理的

Awk(gawk)正则表达式特点

代码如下:

1)Awk 文本工具支持:EREs
awk 指令默认是使用 “EREs"
2)Awk 文本工具处理文本的特点
a. awk 处理的对象:文本文件
b. awk 处理操作:主要是对列进行操作

三、常见3中类型正则表达式比较

字符 说明 Basic RegEx Extended RegEx python RegEx Perl regEx 转义   ^ 匹配行首,例如'^dog'匹配以字符串dog开头的行(注意:awk 指令中,'^'则是匹配字符串的开始) ^ ^ ^ ^ $ 匹配行尾,例如:'^、dog$'匹配以字符串 dog 为结尾的行(注意:awk 指令中,'$'则是匹配字符串的结尾) $ $ $ $

^$

匹配空行

^$ ^$ ^$ ^$ ^string$ 匹配行,例如:'^dog$'匹配只含一个字符串 dog 的行 ^string$ ^string$ ^string$ ^string$ > 不支持 不支持(但可以使用b来匹配单词,例如:'frogb')

匹配一个单词或者一个特定字符,例如:''(等价于'bfrogb')、'' 不支持 不支持(但可以使用b来匹配单词,例如:'bfrogb'

()

匹配表达式,例如:不支持'(frog)' 不支持(但可以使用(),如:(dog) () () ()

()

匹配表达式,例如:不支持'(frog)' () 不支持(同()) 不支持(同()) 不支持(同())

匹配前面的子表达式 0 次或 1 次(等价于{0,1}),例如:where(is)?能匹配"where" 以及"whereis" 不支持(同?) ? ? ? ? 匹配前面的子表达式 0 次或 1 次(等价于'{0,1}'),例如:'where(is)? '能匹配 "where"以及"whereis" ? 不支持(同?) 不支持(同?) 不支持(同?) ? 当该字符紧跟在任何一个其他限制符(*, +, ?, {n},{n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个"o",而 'o+' 将匹配所有 'o' 不支持 不支持 不支持 不支持 . 匹配除换行符('n')之外的任意单个字符(注意:awk 指令中的句点能匹配换行符) . .(如果要匹配包括“n”在内的任何一个字符,请使用:'(^$)|(.) . .(如果要匹配包括“n”在内的任何一个字符,请使用:' [.n] ' * 匹配前面的子表达式 0 次或多次(等价于{0, }),例如:zo* 能匹配 "z"以及 "zoo" * * * * + 匹配前面的子表达式 1 次或多次(等价于'{1, }'),例如:'where(is)+ '能匹配 "whereis"以及"whereisis" + 不支持(同+) 不支持(同+) 不支持(同+) + 匹配前面的子表达式 1 次或多次(等价于{1, }),例如:zo+能匹配 "zo"以及 "zoo",但不能匹配 "z" 不支持(同+) + + +

{n}

n 必须是一个 0 或者正整数,匹配子表达式 n 次,例如:zo{2}能匹配 不支持(同{n}) {n} {n} {n} {n,} "zooz",但不能匹配 "Bob"n 必须是一个 0 或者正整数,匹配子表达式大于等于 n次,例如:go{2,} 不支持(同{n,}) {n,} {n,} {n,} {n,m} 能匹配 "good",但不能匹配 godm 和 n 均为非负整数,其中 n

    
 
 

您可能感兴趣的文章:

  • Linux c++ boost库正则表达式用法
  • linux下有什么函数可以处理正则表达式?
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • linux 正则表达式
  • linux grep 正则表达式 求解释
  • Linux find命令的搜索路径可否使用正则表达式
  • 请问linux下有哪些轻量级的正则表达式库,我在一个应用中使用
  • LINUX正则表达式 空格问题
  • LINUX SHELL 正则处理汉字 问题
  • windows与linux 路径正则写法
  • linux如何匹配正则表达式
  • linux shell正则的一个问题
  • 100分求助linux下与grep有关的正则表达式匹配问题
  • 麻烦解释一下Linux下正则表达式元字符( )的意思?
  • 关于LINUX下面AWK的正则表达式,求解答,在线等
  • 问个linux shell正则表达式子的问题
  • 问两个linux c的正则表达式语法问题:贪婪模式和位置指定
  • linux 正则表达式深度解析
  • Linux 正则表达式详解
  • 关于linux下的正表达式
  • linux正侧表达式过滤的问题
  • linux iis7站长之家
  • linux shell中 if else以及大于、小于、等于逻辑表达式介绍
  • linux shell 逻辑运算符、逻辑表达式详细介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Red Hat Linux与WindowsXP操作系统,其数据存取有什么差异?
  • 不同windows版本连接linux的差异?
  • linux系统mysql如何进行差异备份
  • 知识共享:从Linux到Solaris:概述和命令差异,学吧~,兄弟们!
  • Linux和DOS的实时性相比如何?谁能说一下两者差异的原理?100分立给。
  • linux中动态路由和静态路由的区别?性能差异与相关性
  • 关于线程创建的unix/linux差异性问题?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3