广告
返回顶部
首页 > 资讯 > 精选 >Shell中正则表达式怎么用
  • 224
分享到

Shell中正则表达式怎么用

2023-06-06 03:06:53 224人浏览 独家记忆
摘要

这篇文章主要介绍shell中正则表达式怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!正则表达式    正则表达式:编写处理字符串的程序或网页时,用于描述查找符合某些复杂规则的字符串的工具。换

这篇文章主要介绍shell正则表达式怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

正则表达式


    正则表达式:编写处理字符串的程序或网页时,用于描述查找符合某些复杂规则的字符串的工具。换句话说,就是文本规则的代码。
     正则表达式与通配符类似,是一种进行文本匹配的工具,但是它可以更精确的描述匹配需求。常见的支持正则表达式的工具有:匹配文本行的 grep 工具族;改变输入流的 sed 流编辑器;处理字符串的语言 awk、python、perl、Tcl 等;文件查看程序或分页程序 more、page、less 等;文本编辑器 ed、vi、eMacs、vim 等。
     正则表达式内部有多种方法嵌入注释,因此它具有自文档化(self-documenting)的能力。
     \b 是正则表达式的一个特殊代码(元字符,meta character),代表单词的开头或者结尾,也就是单词的分界处。通常英文的单词是由 空格、标点符号或者换行来分隔的,但是 \b 并不匹配它们中的任何一个,只匹配一个“位置” - 这个位置的前一个字符和后一个字符不全是(一个是,一个不是或不存在) \w。“.”是另一个元字符,匹配除了换行符以外的任意字符,“*”指定它之前的内容可以连续重复出现任意次。“.*”就表示任意数量的不包含换行的字符。“\d”元字符匹配一位数字(0 或者 1 或者 2 ……),\d{n}表示“\d”必须连续重复匹配 n 次。
     历史上曾经出现过三种 grep,它们都可以用于匹配文本:Grep 是最早的文本匹配程序,使用 POSIX 支持的基本正则表达式(Basic Regular Expression,BRE);Egrep 是扩展的 grep(Extended grep),使用扩展正则表达式(Extended Regular Expression,ERE);Fgrep 是快速 grep(Fast grep),用于匹配固定字符而不是正则表达式。1992 年发布的 POSIX(The Portable Operating System Interface) 标准中,三个版本合而为一。fgrep 和 egrep 可以在所有 UNIX/linux 系统上使用,但是被标记为 deprecated(不推荐)。
     从最基本的角度将,正则中有元字符(特殊字符)和一般字符匹配这两种基本字符匹配。一般字符指没有任何特殊意义的字符,而元字符则被赋予了某些特殊含义。

Shell中正则表达式怎么用

Shell中正则表达式怎么用

Shell中正则表达式怎么用

     POSIX 标准中 BRE 和 ERE 支持的 meta 字符有相同也有差异;而 Linux 使用的 GNU 版本的 grep 则功能更强,并且可以通过 -G、-E、-F 选项使用 egrep 和 fgrep 功能。

Shell中正则表达式怎么用

     在 Linux 下的 grep,除了 fgrep 之外,都支持 POSIX 的特殊字符类。其中字符集(POSIX Character class)是以 ‘[:’和‘:]’括起来的字符,而且需要放到 [] 内才能成为正则表达式,例如 [A-Za-z0-9] 与 [[:alnum:]] 等价;排序符号(Collating symbol)是以‘[.’和‘.]’括起来的字符,将多个字符序列视为一个元素,例如 [.cn.] 表示 cn 字符序列;等价字符集(Equivalence class)表示应视为等值的一族字符,使用‘[=’和‘=]’将字符括起来。正则表达式允许将 POSIX 字符集与其他字符集混用,例如 [[:alpha:]!] 匹配任意一个英文字母或者感叹号。

Shell中正则表达式怎么用

     上图中,使用了 [[:digit:]_]+ 正则表达式,它匹配一个或多个“数字字符或下划线”,使用 -E 参数来支持 ERE。
     匹配单个字符有四种方式:一般字符、转义的 meta 字符、点号‘.’meta 字符、方括号表达式。一般字符指未列于表 4-1 中的字符,包括文字和数字字符、空白字符和标点符号字符,一般字符匹配自身,例如正则 china 就匹配单词 china 而不是 China,如果想要同时匹配需要用方括号表达式。表 4-1 中列出了一些 meta 字符,表示一些特殊情况下的含义,当 meta 字符无法表示自己,而又需要这些字符时,就要用转义字符,将转义字符置于一般字符前,转义字符本身会被忽略。点号字符表示任一字符,很少单独使用点号符,经常与其他 meta 字符混用来匹配多个字符。方括号表达式(bracket expression)用以匹配不同的情况,例如 [cC]hina 只匹配 china 和 China,[^abc] 匹配除了 abc 意外的任意字符,同时在方括号表达式中,所有其他的 meta 字符都会失去含义,例如 [\.] 匹配反斜杠和点号,而不是匹配句点。
     在基本正则表达式中,最简单的表示多个字符的方法是将多个字符连接起来。但是这种方法局限很多,而修饰符 meta 的应用提供了灵活的匹配能力。其中星号(*)meta 字符匹配 0 个或多个星号前的单个字符。区间表达式可以匹配指定字符的重复次数,例如 ab\{3\}c 匹配 a 和 c 之间的 b 重复出现三次,ab\{3,\}c 匹配 b 重复出现至少三次,ab\{3,5\}c 匹配 b 重复出现三次到五次。ERE 在匹配多个字符时与 BRE 很相似,但是支持更多的表达式,但 ERE 中的区间表达式不需要转义字符,它的 \{ 和 \} 仅表示花括号本身。在 ERE 中,? 匹配 0 个或一个前置正则表达式,+ 匹配一个或多个前置正则表达式,例如 ab?c 只匹配 ac 和 abc,ab+c 匹配 abc、abbc、abbbc…… 而不匹配 ac。
     锚点字符(^ 和 $)用于匹配字符串的开头和结尾,^ 和 $ 一起使用,则两者之间的正则表达式匹配了整个正则表达式或整行,而 ^$ 匹配空的字符串或空行。BRE 中锚点仅仅在正则表达式的开始和结尾处才是 meta 字符,而在正则表达式中的锚点字符仅仅代表它自身,ERE 中锚点字符永远是 meta 字符,正则表达式中包含的锚点字符有意义,只是无法匹配上任何字符串,例如 abc^defg 在 BRE 中匹配字符串“abc^def”,而在 ERE 中永远也匹配不上任何东西。
     

Shell中正则表达式怎么用

Shell中正则表达式怎么用

     运算符优先级指在不同的 meta 字符同时出现时,高优先级的 meta 字符将比低优先级的先处理。
     BRE 中提供了一种机制名为“后向引用”(backreference),用于匹配之前正则表达式选定的部分。\1 - \9 引用之前选定的模式,‘\(’和‘\)’括起想要之后引用的部分。例如 \(ab\)\(cd\)[efg]*\1\2 匹配 abcdabcd、abcdeabcd、abcdfabcd、abcdgabcd,\(Go\).*\1 匹配一行中前后出现两个 go。
     交替是 ERE 才有的特性,当使用方括号表达式时,交替表示可以“匹配这个字符,或者那个字符”,但是无法“匹配这个字符序列或那个字符序列”。交替是在不同序列之间用管道符号隔开,例如 you|me 匹配 you 或 me。交替字符可以和管道符号意义在一个正则表达式中使用多个来提供多种选择。因为它的优先级最低,所以会一直扩展到新的交替字符,或正则表达式结束为止。
     在 BRE 中,使用一些 meta 字符修饰前置字符匹配重复的情况,但是仅仅只针对单个字符。在 ERE 中分组功能使 meta 字符修饰前置字符串,通过‘()’将式子括起来,例如(go)+ 匹配一个或多个连续的 go。在使用交替时,分组非常有用,例如(Lily|Lucy)限定了匹配 Lily 或 Lucy。

以上是“Shell中正则表达式怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Shell中正则表达式怎么用

本文链接: https://www.lsjlt.com/news/245970.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Shell中正则表达式怎么用
    这篇文章主要介绍Shell中正则表达式怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!正则表达式    正则表达式:编写处理字符串的程序或网页时,用于描述查找符合某些复杂规则的字符串的工具。换...
    99+
    2023-06-06
  • Shell正则表达式怎么用
    这篇文章将为大家详细讲解有关Shell正则表达式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、正则表达式是什么?正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、...
    99+
    2023-06-09
  • shell正则表达式
         Shell脚本扩展一 正确表达式正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。1. 支持的命令:grep、vim、fi...
    99+
    2022-10-18
  • 怎么在shell中使用正则表达式
    怎么在shell中使用正则表达式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。正则表达式概述正则表达式是一种定义的规则,Linux工具可以用它来过滤文本。基础正则表达式纯文...
    99+
    2023-06-09
  • Shell if中的正则表达式怎么用
    这篇文章主要介绍Shell if中的正则表达式怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!由于工作需要对用户提交的数据进行验证,这是一个简单的日期正则验证实例,有需要了解的同学可参考。shell中的if语句需...
    99+
    2023-06-09
  • python3 shell 正则表达式
    突然自己悟到的一点小技巧,先写在这里,以免以后又忘记。有个字符串 s='''style="border-top:1px dotted #DDD;text-align:left;padding-left:5px;"><a href...
    99+
    2023-01-31
    正则表达式 shell
  • Shell正则表达式中grep、sed、awk怎么用
    这篇文章主要介绍了Shell正则表达式中grep、sed、awk怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先先复制一段范例:代码如下:# vi regular_e...
    99+
    2023-06-09
  • 在python正则表达式中是怎样正确使用正则表达式
    这篇文章将为大家详细讲解有关在python正则表达式中是怎样正确使用正则表达式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。现在我们已经看了一些简单的正则表达式,那么我们实际在 Python...
    99+
    2023-06-17
  • 怎么用Shell正则表达式验证IP地址
    这篇文章主要讲解了“怎么用Shell正则表达式验证IP地址”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Shell正则表达式验证IP地址”吧!本机多个IP 代码如下:ifconfig ...
    99+
    2023-06-09
  • Java中怎么用正则表达式
    这篇文章将为大家详细讲解有关Java中怎么用正则表达式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。学习正则表达式,用Jdk1.4后的java.util.regex模式:我们来看一些更常用的表达式的种类文...
    99+
    2023-06-03
  • Oracle中正则表达式怎么用
    小编给大家分享一下Oracle中正则表达式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Oracle使用正则表达式离不开这...
    99+
    2022-10-18
  • Java中正则表达式怎么用
    这篇文章将为大家详细讲解有关Java中正则表达式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java 正则表达式的使用,具体内容如下所示:java.util.regex.Patternjava.u...
    99+
    2023-05-31
    java
  • hive中正则表达式怎么用
    小编给大家分享一下hive中正则表达式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。...
    99+
    2023-06-03
  • linux中正则表达式怎么用
    小编给大家分享一下linux中正则表达式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理行为,正...
    99+
    2023-06-13
  • Python中怎么使用正则表达式及正则表达式匹配规则是什么
    1 导库import re2 使用模板re_pattern = re.compile(pattern, flags=0) result = re.findall(re_pattern,string)3 说明参数描述pattern匹配的正则表...
    99+
    2023-05-14
    Python
  • Shell正则表达式学习笔记
    正规表示法(或称为常规表示法)是透过一些特殊字符的排列,用以搜寻/取代/删除一列或多列文字字符串, 简单的说,正规表示法就是用在字符串的处理上面的一项『表示式』。正规表示法并不是一个工具程序, 而是一个字符...
    99+
    2022-06-04
    学习笔记 正则表达式 Shell
  • Oracle正则表达式怎么用
    这篇文章给大家分享的是有关Oracle正则表达式怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。oracle正则表达式 ORACLE中的支持正则表达式的函数主要有下面四个: ...
    99+
    2022-10-18
  • JavaScript正则表达式怎么用
    这篇文章主要为大家展示了“JavaScript正则表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript正则表达式怎么用”这篇文章吧。什...
    99+
    2022-10-19
  • VB.NET正则表达式怎么用
    小编给大家分享一下VB.NET正则表达式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、引言在通常的程序设计中,对字符串的操作是不可缺少的部分。例如,我们...
    99+
    2023-06-17
  • Flex正则表达式怎么用
    这篇文章主要为大家展示了“Flex正则表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex正则表达式怎么用”这篇文章吧。Flex正则表达式学习一般来说各个开发环境或者语言对于Fle...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作