正则表达式的简单梳理

这篇博文我们按照每一种正则表达式符号来整理。

1)行首定位符“^”:匹配行首的字符

#-----------------------------/chapter8/ex8-2.sh------------------
#! /bin/bash

#列出/etc目录中的以字母po开头的文件
str=`ls /etc | grep "^po"`
echo "$str"

注意:str变量的赋值,即等号右边需要有反引号;其中用到了管道命令,grep命令处理对象是前面ls的结果,不然grep后面要接被处理文件名;正则表达式要用双引号""括起来,在awk、sed中是用两条反斜杠\...\括起来。

2)行尾定位符"$":匹配行尾的字符

#-----------------------------/chapter8/ex8-3.sh------------------
#! /bin/bash

#列出/etc目录中以conf结尾的文件名
str=`ls /etc | grep "conf$"`

echo "$str"

3)匹配整行:"^一整行内容$"

4)单个字符匹配".":可以代表任意字符,包括空格,不包括换行符\n

#-----------------------------/chapter8/ex8-4.sh------------------
#! /bin/bash

#列出所有的包含字符串“samba”的文件名
str=`ls /etc | grep "samba"`

echo "$str"

echo "==============================="

#列出包含字符串samba以及另外一个字符的文件名
str=`ls /etc | grep "samba."`

echo "$str"

注意:有了"."就表示一定有个字符在这儿,也可以用多个"."表示多个字符存在,例如"l..p"。

5)限定符"*":重复其前面的字符0次或者多次

#-----------------------------/chapter8/ex8-5.sh------------------
#! /bin/bash

#筛选出以字符s开头,紧跟着1个字符s,任意个字符s的文件名
str=`ls /etc | grep "^sss*"`

echo "$str"

注意:可以表达重复0次;正则表达式的*和linux shell中的*不一样,那个是表示匹配任意字符(串),不一定要是重复前面的字符,可以说范围更广。

6)字符集匹配“[]”:匹配中括号中的任意一个字符即可

#-----------------------------/chapter8/ex8-6.sh------------------
#! /bin/bash

#筛选所有以字符r开头,并且紧跟着1个字符c的文本行
str=`ls /etc |grep "^rc"`

echo "$str"<pre name="code" class="plain">#-----------------------------/chapter8/ex8-7.sh------------------
#! /bin/bash

#筛选以字符串“ss”开头,后面至少紧跟着1个字符“s”的文本行
str=`ls /etc | egrep "^sss+"`

echo "$str"

注意:[a-z]匹配小写字母,[A-Z]匹配大写字母,[a-zA-Z]匹配字母,[0-9]匹配数字。

当元字符“*”和 “.”在"[]"内时,只能表示一个普通的字符,没有上面的特殊含义了。

7)字符集不匹配“[^]”:功能和上面正好相反

8)限定符“+”:功能类似于"*",但是重复前面字符的次数必须大于等于1次,不能是0次

#-----------------------------/chapter8/ex8-7.sh------------------
#! /bin/bash

#筛选以字符串“ss”开头,后面至少紧跟着1个字符“s”的文本行
str=`ls /etc | egrep "^sss+"`

echo "$str"

9)限定符“?”:功能类似于“*”,但是重复其那面字符的次数必须只能是0次或1次

#-----------------------------/chapter8/ex8-8.sh------------------
#! /bin/bash

#筛选以字符串“ss”开头,后面跟着0或者1个s的文本行
str=`ls /etc | egrep "^sss?"`

echo "$str"

10)竖线"|"和圆括号"()":多个正则表示之间的或的关系

#-----------------------------/chapter8/ex8-9.sh------------------
#! /bin/bash

#筛选含有字符串“ssh”、“ssl”或者以字符串“yum”开头的文本行
str=`ls /etc | egrep "(ssh|ssl|^yum)"`

echo "$str"

11)"{m, n}"、"{m}"、"{m,}":指定重复出现的次数

前面的限定符"*", "+", "?"都可以重复前面的字符不同的次数,但是重复出现的次数都不可控。我们使用"{m, n}"、"{m}"、"{m,}"就可以控制重复出现的次数。

"{m, n}":前置字符最少出现m次,最多出现n次;

"{m}":前置字符出现m次;

"{m,}":前置字符最少出现m次。

如果重复的字符不是唯一的呢?这时可以和中括号字符集匹配"[]"结合使用,如下:

#-----------------------------/chapter8/ex8-16.sh------------------
#! /bin/bash

#筛选符合格式的电话号码
str=`egrep "800-[[:digit:]]{3}-[[:digit:]]{4}$" demo4.txt`

echo "$str"

注意:在普通正则表达式中没有对{}的定义,需要加转义字符:\{m,
n\}。

12)POSIX字符集可以方便表示"[]"的字符集

注意:使用POSIX字符集时需要两层中括号。

时间: 2024-10-19 03:03:40

正则表达式的简单梳理的相关文章

C#正则表达式_简单梳理

最近一直有接触到正则表达式,现对其做简单梳理: private const RegexOptions OPTIONS = RegexOptions.IgnoreCase | RegexOptions.Compiled;public const string EMAIL = @"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"; public const string URL = @"^(http|https|ftp|rtsp|mms):(\/\/|

Memcached概念、作用、运行原理、特性、不足简单梳理(1)

http://www.cnblogs.com/yinrq/p/5013742.html Memcached概念.作用.运行原理.特性.不足简单梳理(1) 大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过.这都没什么关系,本文旨在从各个角度综合的介绍这种产品,尽量深入浅出,如果能对您现在或以后的工作有所帮助,笔者将感到无比荣幸. Memcached概念.作用.运行原理.特性.不足简单梳理(1) Memcached下载安装.NET

机器学习&amp;数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

http://www.cnblogs.com/tornadomeet/p/3395593.html 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大.

C#基础知识简单梳理

C#基础知识简单梳理 本文是转发博友的总结,方便自己以后随时温习: 1.值类型和引用类型 1.1堆和栈 简单的说值类型存放在堆栈上面,引用类型的数据存放在托管堆上面(它的引用地址却存放在堆栈上面)! 栈:它是一个内存数组,是一个先进后出的数据结构! 栈的特征:数据只能从栈顶进,从栈顶出! 堆:它是一个内存区域,可以分配大块区域存储某类型的数据,与栈不同的是它里面的数据可以任意排序和移除! 下面是园子的一张图,贴上来供大家参考啊! 问     题 值  类  型 引 用 类 型 这个类型分配在哪里

GNU/Linux平台上正则表达式的简单使用

友情提醒:本博文涉及的内容中涉及到的系统实践操作在Centos6.5上实现,GNU/Linux简称为linux,GNU/grep简称为grep,GNU/sed简称为sed,GNU/gawk简称为awk. -------------------------------------------------楔子--------------------------------------------- 小酒馆一角落,一胖三瘦围着方桌坐定,大快耳颐后正在唠嗑. 瘦子甲:"胖子,为什么要把正则表达式和lin

正则表达式结合实例简单梳理

正则表达式在所有语言中都是通用的,它使用一种特定的规则来匹配一个字符串,当满足这个规则,就认为此字符串匹配成功.结合各个语言中的不同方法,可以返回匹配成功true.false或者匹配的字符串等. 本文对正则表达式做一个简单的知识梳理,结合一些小例子来加深印象. 正则表达式的验证方法现在也多种多样,在这里就不推荐了,大家选择适合自己用得惯的就好. 常用元字符 既然是特定的规则,那么在正则表达式中就有相对应的特殊符号,你不用去记它的名字是什么,只需要知道它做了什么. . 匹配除换行符以外的任意字符

对正则表达式的简单理解

所有的表达式其实都基于三个命令 接下来关键是正则的匹配规则需要我做理解 对如下匹配文本做一个简单的测试:https://wz.cnblogs.com/ 正则表达式:.[a-z]{1,15} 匹配结果: https /wz .cnblogs .com 正则表达式:^.[a-z]{1,15} 匹配结果: https 正则表达式:.[a-z]{1,15}/$ 匹配结果: .com/ 正则的工作流程,是用文本,从左至右对正则表达式进行的最大满足匹配

python正则表达式的简单使用

模块函数 re.compile(pattern [, flag]) 把正则表达式预编译成正则表达式对象(模式对象),供以后使用. #模式对象,有re.compile()返回 >>> pobj = re.compile('Hello,(.*)') >>> pobj <_sre.SRE_Pattern object at 0x7fb83dc9a530> re.match(pattern, string [, flag]) 如果字符串起始处有0个或多个字符串匹配模

IOS正则表达式的简单介绍

下面是简单正则表达式的个个字符的意识: 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”).模式描述在搜索文本时要匹配的一个或多个字符串. 正则表达式示例 表达式 匹配 /^\s*$/ 匹配空行. /\d{2}-\d{5}/ 验证由两位数字.一个连字符再加 5 位数字组成的 ID 号. /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记. 下表包含了元字符的完整列表以及它们在