shell正则表达式

摘要:
1、 正则表达式分类字符类数量限定符位置限定符1.1字符类元字符函数示例。匹配除换行符#egrapa之外的任何字符。b文件名;指示匹配文件中a和b之间具有任意字符的行;指示匹配文件中包含任何数字0-9的行;]]grep工具中的一些预定义命名字符[[:]表示与英文字母[a-Z]1.2数量限定符匹配。例如,函数是什么?指示匹配的数字最多可以是2位数。{n:表示^a以[]中的任何字符开头;

前言

  正则表达式是一个字符串处理的标准依据。是使用单个字符串搜索、匹配一系列符合某个语法规则的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的。

一、正则表达式分类
  • 字符类
  • 数量限定符
  • 位置限定符

1.1 字符类

元字符功能举例
.匹配除了换行符之外的任意一个字符#egrep a.b 文件名;表示匹配文件中a跟b之间有一个任意字符的行;
-在括号中使用,表示匹配的字符的范围[0-9]表示的就是从数字0到数字9这个范围的数字;
[ ]匹配括号中的任意一个字符#egrep [0-9] 文件名;表示匹配文件中含有0-9任意一个数字的行;
[[:xxx:]]grep工具预定义的一些命名字符[[:digit:]]表示匹配一个数字[0-9],[[:alpha:]表示匹配一个英文字母[a-Z]

1.2 数量限定符

字符功能举例
?紧跟在它前面的单元应匹配零次或者一次 ,是通配符的一种,等价于(0,1) 
+紧跟在它前面的单元应匹配一次或者多次(至少一次),等价于(1,) 
*紧跟在它前面的单元匹配零次或者多次,是通配符的一种“a”:表示匹配所有内容,包括空行;“aa”:表示匹配至少含有一个a的行;“aaa”:表示匹配至少含有两个a的行;
{n}紧跟在它前面的单元应匹配n次[0-9]{4}:表示匹配4位数字;
{n,}紧跟在它前面的单元应匹配至少n次[0-9]{3,}:表示匹配至少匹配3位数字;
{,m}紧跟在它前面的单元应匹配最多m次[0-9]{,2}:表示匹配数字最多2位
{n,m}紧跟在它前面的单元应匹配至少n次,最多m次[0-9]{1,3}:表示匹配数字至少1位,最多3位;

1.3 位置限定符

元字符功能举例
^匹配行首的位置;a.位于[ ]括号内,则匹配除括号中字符之外的任意字符,也就是对[ ]括号内的字符取反;b.位于[ ]括号外面,则表示以[ ]中的任意一个字符开头^a:表示匹配文件中以a开头的行;[ ^0-9]:表示匹配任意一位非数字字符;
$匹配行尾的位置“a$”:表示匹配以a结尾的行;

1.4 其他元字符

元字符功能举例
转义符,可以将普通字符转为特殊字符,将特殊字符转为普通字符,大多时候是用在将特殊字符的含义取消".$“如果前面没有加转义符,则表示匹配以任意一个字符结尾的行,加上转义字符之后表示匹配以”."结尾的行,也就是把“.“的特殊含义取消了,变成普通的”.”符号;
()小括号可以将正则表达式的一部分括起来组成一个单元(也就是一个组),可以对整个单元使用数量限定符([a-z]-[0-9]){1,3}:表示匹配”字母-数字“这样的格式的组合三次
|连接两个子表达式,表示或的关系a|b表示a或者b;

1.5 表示集合的字符类描述

字符描述
[:alnum:]表示所有字母数字的集合,[a-z A-Z 0-9]
[:alpha:]表示所有字母的集合,[a-z A-Z]
[:digit:]表示所有数字,[0-9]
[:lower:]表示所有的小写字母的集合,小写[a-z]
[:upper:]表示所有大写字母的集合,大写[A-Z]
[:space:]表示空格
[:blank:]表示所有空格或者制表键(tab键)的集合
[:punct:]表示所有的标点字符
[:cntrl:]表示所有的控制字符
[:print:]表示所有的非控制字符
[:graph:]表示所有可视,可打印的字符(不包含空格)
[:xdigit:]表示所有十六进制的数字的集合,[0-9 a-f A-F]
二、正则表达式优先级

正则表达式与算术表达式类似,遵循优先级顺序,相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从上到下说明了各种正则表达式运算符的优先级顺序,同行表示同级:

运算符描述
转义符
(),(?:),(?=),[]圆括号和方括号
*, +, ?, {n}, {n,}, {n,m}限定符
^, $, 任何元字符、任何字符定位点和序列(即:位置和顺序)
|“或"操作,字符具有高于替换运算符的优先级,所以”s|get“匹配"s"或"get”。若要匹配"set"或"get",需要使用括号创建子表达式,例:"(s|g)et"

免责声明:文章转载自《shell正则表达式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇操作系统-数据库知识点查漏学习一Android显示GIF图片下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

密码验证规则-正则表达式

string pattern = @"^(?=.*[0-9])(?=.*[!@#$%^&*])[0-9a-zA-Z!@#$%^&*0-9]{10,}$"; string msg = "Password should have one numeral and one special character""...

3.qml-ECMAScript_03(Object基类对象、String对象)

在上章学习了:2.qml-ECMAScript_02(原始值类型、通用转换方法) 本章我们来初步学习ECMAScript的内置对象.Object对象和String对象.   对象创建与回收对象是由 new 运算符加上要实例化的对象的名字创建的,实际对象就是引用值,指向存储对象的内存处 例如,下面的代码创建 Array对象的实例: var arr1 = ne...

python 正则之字母匹配

A:匹配字符串的开始   :匹配一个单词边界   取出a边界单词的个数 >>> len(re.findall(r"a"," ab abc add")) 3 B:匹配非单词边界   d:匹配任意一个数字范围【0-9】 >>> re.match(r"d+","123abc") <_sre.SRE_Match obj...

Ubuntu下添加开机启动项的2种方法

1、方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本,所以我们可以直接在/etc/rc.local中添加启动脚本。当然要添加到语句:exit 0 前面才行。如: 复制代码 代码如下: sudo vi /etc/rc.local 然后在 exit 0 前面添加好脚本代码。 2、方法二,添加一个Ubuntu的...

python2.7中的字符编码问题

转自:https://www.cnblogs.com/liaohuiqiang/p/7247393.html 0. 写在前面 起因:之前写个数据预处理程序的时候遇到了点问题,用re模块的正则查找方法search时总是找不出来(找错了或者出乱码),于是捣鼓捣鼓。 经过:查资料,做实验,发现用utf8编码的str类型的字符串在search方法中行不通,因为st...

Unicode(UTF-8, UTF-16)令人混淆的概念

为啥需要Unicode       我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的,没啥太多不一样.其他啥文字图片之类的其他东东计算机不认识.那为了在计算机上表示这些信息就必须转换成一些数字.你肯定不能想怎么转换就怎么转,必须得有...