正则表达式用于处理文本,精通运用正则表达式可以有效的解决工作的效率

正则表达式有基础正则表达式和扩展正则表达式区别

grep支持基础的正则表达式,grep -E (egrep)支持扩展正则表达式

1、脱字符号(^)、美元符号($)

脱字符号和美元符号实质上匹配的是一个位置(即定位),分别锚定一行的行首(^)和一行的行尾($)

在这里详细说明一下理解正则表达式是习惯:

^hel

^锁定一行的开始,接下来是字符h,紧接着是字符e,最后是字符l

只要满足这个标准,至于小写字母 L 之后是否存在字符就不在考虑范围之内了,这样理解正则表达式就很容易了

2、字符组 []

字符组匹配的是一组字符集合中的一个字符(必须匹配到一个字符)。(字符组嵌套使用变化多)

例: gr[ea]y     意思是:先找到字符g,接下来是字符r,紧接着是字符e或者a,最后是字符y,[]内含义是或者的意思

显然,gr[ea]y 并不匹配gry,这是因为[ea]占用一个位置字符,如果没有gray或者grey,则命令反馈为空白

字符组中还包含两个元字符:-(连字符)和^(排除符号)

-(连字符)在字符组[]中只有在两个字符中间才是表示范围的意思,例:<H[1-6]>,表示匹配<H 1>、<H 2> 、<H 3> 。。。。。

同时多重范围也是允许的。[0-9A-F_!.?] 表示匹配一个数字、一个大写字母、下划线、感叹号、点、问号,字符组内的顺序无关紧要。

有人会问 ?字符(?)不是正则表达式,匹配前一个字符0个或者1个吗?怎么又是匹配?问号呢?  说明一下,字符组中符号-和^才是解释为正则表达式,其他都是普通字符

注意在字符组中,-和^也不是一定就是解释为正则表达式,位置很关键?如果-在[中括号后的第一个字符,那么就表示普通字符-,如果^不是[中括号后的第一个字符,也不表示排除的意思

第一个-连字符是解释为a到z的范围,第二个-仅仅解释为普通字符-,这样就匹配到了字符h-lo

排除型字符组(^)

[^ ]取代[ ],^在字符组内的含义是排除的意思,例[^3-6] 表示排除数字3 、4、5、6之外的所有字符,不仅包含了1、2、7.。。。数字,大小写字母,还包含了特殊字符.?!~等等

kal[^a] 匹配了kali,却没有匹配kal,这就是我之前说的字符组[]和[^]占用一个匹配位,如果kal之后没有字符是匹配情况的。

后面会结合字符组列举一些技巧

3、句点符号(.

表示用来匹配任意一个字符,空格也可以匹配

多选结构

4、字符 | 匹配任意子表达式

利用扩展正则表达式字符 | 可以筛选多个选项。例: “Bob|Robert”注意字符 | 两边没有空格,表示包含Bob或Robert字符串的行

多选结构的正则表达式字符 | 与字符组[]相似,字符 | 有或者的含义,同时字符组[]内的字符也有或者的含义,但是也有明显的区别:字符组[]仅仅占用一个字符位,而字符 | 两边却是完整的正则表达式

一般| 都结合()一起来使用

()实际上是确定的多选的范围,所以(a|e)与[ea]效果是一样的,同时如果去除(),gre|ad 则表示包含gre或ad的行

三种表达式,反映的效果都是一样,反斜杠用于屏蔽句点符号.

至于第三个表达式,尝试用上面理解正则表达式的方式解读一下:

(Fire|l)st\.[Ss]treet        首先查找包含字符串Fire或者L(小写)接下来查找Fire后面是否紧跟字符s和t(不是就排除),或者是L(小写)后面是否是紧跟s和t,再接下来是句点,接着句点之                后是否是大写s或者小写s,大小写s之后是treet

对于^(Geo|Je)ff(rey|ery) 表示开头字符是Geo或者Je,拆开就是^Geo、 ^Je

如果是^Geoff|Jeff(rey|ery) 是表示什么呢?   匹配一行开始是Geoff的行,或者包含字符串Jeffery或Jeffery的行

5、单词分界符\<和\>  有些egre不支持单词分界符

\<    针对单词,表示匹配单词的开头字符. \<the

\>    针对单词,表示匹配单词的结尾. the\>

与^$相似,只是^$针对行,\<和\>针对单词,所以\<the\> 表示匹配单词的开头为the,结尾也是the,也就是匹配单词the,所以是精准匹配单词

END

shell 正则表达式一的更多相关文章

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

    linux shell 正则表达式(BREs,EREs,PREs)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...

  2. linux shell 正则表达式(BREs,EREs,PREs)的比较

    原文 :   linux shell 正则表达式(BREs,EREs,PREs)差异比较 在使用 linux shell的实用程序,如awk,grep,sed等,正则表达式必不可少,他们的区别是什么 ...

  3. 文本处理三剑客与shell正则表达式

    文本处理三剑客 提到对于文本的处理上,除了vim这个强大的编辑器之外,还有使用命令的形式去处理你要处理的文本,而不需要手动打开文本再去编辑.这样做的好处是能够以shell命令的形式将编辑和处理文本的工 ...

  4. shell(shell函数、shell正则表达式)

    本章内容 shell函数 shell正则表达式 1.shell函数 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. 格式: funname () { CMD #函数体 ...

  5. Shell 正则表达式详解

    Shell 正则表达式 什么是正则表达式? 正则表达式在每种语言中都会有,功能就是匹配符合你预期要求的字符串. 为什么要学正则表达式? 在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量 ...

  6. 我们一起来学Shell - 正则表达式

    文章目录 什么是正则表达式 正则表达式元字符 正则表达式应用举例 POSIX 方括号表达式 POSIX 字符集列表: 我们一起来学Shell - 初识shell 我们一起来学Shell - shell ...

  7. [Shell]正则表达式与通配符

    ----------------------------------------------------------------------------------------- 正则表达式与通配符: ...

  8. Python/Shell 正则表达式与运用

    正则表达式用的地方是很多的.比如字符串处理过程中.最近遇到记录一下. 1. 比如在shell中 #!/bin/bash str="date:2017-11-28 os:centos blac ...

  9. Shell正则表达式和文本处理工具

    作业一:整理正则表达式博客 一.什么是正则 正则就是用一些具有特殊含义的符号组合而成(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 通配符是由shell解释得. ...

  10. shell 正则表达式与文件名匹配

    1) . : 匹配任意单ASCII 字符,可以为字母,或为数字. 2) 举例: ..XC..匹配deXC1t.23XCdf 等,.w..w..w.匹配rwxrw-rw- 行首以^匹配字符串或字符序列 ...

随机推荐

  1. Log4j实战,依赖分析

    背景 在项目中经常被log4j的各种依赖冲突搞的焦头烂额,久病成良医啊,在这里记录一下我对log4j的理解与分析 log4j 与 log4j2 log4j2是log4j的升级版,二者互不兼容,据说lo ...

  2. Step By Step(Lua开篇)

    Step By Step(Lua开篇) 一.简介: Lua作为目前最为流行的.免费轻量级嵌入式脚本语言,在很多工业级的应用程序中被广泛应用,如Adobe's Photoshop,甚至是在一些著名的游戏 ...

  3. kafka实战教程(python操作kafka),kafka配置文件详解

    kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...

  4. Scrapy中的错误

    TabError: Inconsistent use of tabs and spaces in indentation 需要将  .py  文件中的使用 tab 做的空格符删掉,打成空格符.任何一个 ...

  5. X-Deep Learning功能模块

    X-Deep Learning功能模块 特征体系 样本 特征 网络 数据准备 样本格式 使用DataReader读取数据 自定义python reader 定义模型 稀疏部分 稠密部分 优化器 训练模 ...

  6. Springboot中以配置类方式自定义Mybatis的配置规则(如开启驼峰映射等)

    什么是自定义Mybatis的配置规则? 答:即原来在mybatis配置文件中中我们配置到<settings>标签中的内容,如下第6-10行内容: 1 <?xml version=&q ...

  7. 「题解」NWRRC2017 Grand Test

    本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:洛谷 P7025.gym101612G. 题意概述 给你一张有 \(n\) 个点 \(m\) 条边的无向图,无重边无自环, ...

  8. Appium UI自动化测试

    #coding:utf-8 from appium import webdriver import time,traceback ''' desired_capabilities:这些键告诉appiu ...

  9. .NET平台系列31:.NET团队送给.NET开发人员的云原生学习资源汇总

    系列目录     [已更新最新开发文章,点击查看详细] .NET Core 启动于2016年,跟K8S同年诞生,既拥有着悠久的历史积累,又集成了当下最新的设计理念,加上.NET团队持续对容器技术的官方 ...

  10. 在Intellij IDEA中查看TestNG自带的测试报告

    执行TestNG框架的测试用例,会生成测试报告.如果在IDEA中看不到,可做如下配置. 1. 点击IDEA工具栏中Run->Edit Configuration菜单,或者直接点击右上角编辑配置的 ...