一文看懂Linux中使用Shell正则表达式

Shell正则表达式

Shell语言是一种脚本语言。也有其他脚本语言也有正则表达式,如python,Perl,Tcl等。一般的脚本语言的规则都遵循一致的规则,本节主要介绍一下Shell正则表达式的规则。

一、正则表达式
  1. 正则表达式
    正则表达式是一种用于描述字符排列和匹配模式的一种语法规则,linux系统中的文本处理工具可以借助shell正则表达式处理文本文档。
  2. 正则表达式的分类:
    1 字符类
    2 数量限定符类
    3位置限定符类
    4 特殊符号
  3. 正则表达式的特点:
    1 灵活性、逻辑性和功能性非常的强;
    2 可以迅速地用极简单的方式达到字符串的复杂控制。
    3 对于刚接触的人来说,比较晦涩难懂。
    由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容
二、字符类
字符释义example
.匹配除了换行符之外的任意一个字符abcd.可以匹配abcde,abce9等
[]在括号中使用,表示匹配的字符的范围[abc]d可以匹配aad,bd,afscd
-匹配括号中的任意一个字符[0-9]表示的就是从数字0到数字9这个范围的数字
[[:xxx:]]grep工具预定义的一些命名字符[[:alpha:]]匹配一个字母 [[:didit:]]匹配一个数字

注意:[[:xxx:]]表示集合类的字符还有一下:

[: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]

三、数量限定符类
字符含义举例
紧跟在它前面的单元应匹配零次或一次[0-9]? \.[0-9]匹配0.0、2.3、.5等,由于.在正则表达式中是一个特殊字符,所以需要用\转义字符转转义一下,取字面值
+紧跟在它前面的单元应匹配一次或多次[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+匹配email地址
*紧跟在它前面的单元应匹配零次或多次[0-9][0-9]*匹配至少一位数字,等价于[0-9]+,[a-zA-Z_]+[a-zA-Z_0-9]*匹配C语言的标识符
{N}紧跟在它前面的单元精确匹配N次[1-9][0-9]{2}匹配从100-999的整数
{N,}紧跟在它前面的单元至少匹配N次[1-9][0-9]{2,}匹配三位以上(含三位)的整数
{,N}紧跟在它前面的单元最多匹配N次[0-9]{,1} 相当于[0-9]?
{N,M}紧跟在它前面的单元至少匹配N次,最多匹配M次[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}匹配IP地址
四、位置限定符类
字符含义举例
^匹配当前行首的位置^content匹配位于一行开头有的位置
$匹配当前行末的位置abc$匹配位于一行结尾的位置
\<匹配单词开头的位置\<th匹配…this,但不匹配tenth
\>匹配单词结尾的位置p\>匹配leap … 但不匹配parent
\b匹配单词开头或结尾的位置\bat\b只匹配 … at … 但不匹配cat ?atexit
\B匹配不是单词开头和结尾的位置(中间某位置)\Bat\B 匹配battery 中间含有at的单词 但不匹配 attend
五、特殊符号:
字符含义举例
\转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符普通字符<写成\<表示单一开头的位置,特殊字符.写成\.以及\写成\\就当做普通字符来匹配
()将正则表达式的一部分括起来组成一个单元,可以对整得单元使用数量限定符([0-9]{1,3}\.){3}[0-9]{1,3}pipei IP地址
|连接两个子表达式,表示或的关系n(o|either)匹配no或neither

以上就是一个正则的表达式常用的规则。给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
  1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

六、正则表达式的应用
  1. 基本正则表达式和扩展正则表达式
    基本的正则表达式(Basic Regular Expression又叫Basic RegEx简称BREs)
    扩展的正则表达式(Extended Regular Expression又叫Extended RegEx 简称EREs)
    Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx简称PREs)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摆渡沧桑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值