第十五章 shell正则表达式

第十五章 shell正则表达式

见图片

Shell正则表达式

正则表达式的分类

  1. 基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs)
  2. 扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs)
  3. Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs)

基本组成部分

正则表达式的基本组成部分。

正则表达式 描述 示例 Basic RegEx Extended RegEx Python RegEx Perl regEx
\ 转义符,将特殊字符进行转义,忽略其特殊意义 a\ .b匹配a.b,但不能匹配ajb,点被转义为特殊意义 \ \ \ \
^ 匹配行首,awk中,^则是匹配是字符串的开始 ^tux匹配以tux开头的行 ^ ^ ^ ^
$ 匹配行尾,awk中,$则是匹配字符串的结尾 tux$匹配以tux结尾的行 $ $ $ $
. 匹配除换行符\n之外的任意单个字符,awk中则可以 ab.匹配abc或abd,不可匹配abcd或abde,只能匹配单字符 . . . .
[] 匹配包含在[字符]之中的任意一个字符 coo[kl]可以匹配cook或cool [] [] [] []
[^] 匹配[^字符]之外的任意一个字符 123[^45]不可以匹配1234或1235,1236/1237都可以 [^] [^] [^] [^]
[-] 匹配[]中指定范文内的任意一个字符,要写成递增 [0-9]可以匹配1、2、或3等其中任意一个数字 [-] [-] [-] [-]
? 匹配之前的项 1次或者0次 colou?r可以匹配color或者colour,不能匹配colouur 不支持 ? ? ?
+ 匹配之前的项 1次或者多次 sa-6+匹配sa-6、sa-666,不能匹配sa- 不支持 + + +
* 匹配之前的项 0次或者多次 co*l匹配cl、col、cool、coool等 * * * *
() 匹配表达式,创建一个用于匹配的子串**** max(tri)?匹配max或者maxtri 不支持 () () ()
{n} 匹配之前的项 n次,n是可以为0的正整数 [0-9]{3}匹配任意一个三位数,可以扩展为3个[0-9] 不支持 {n} {n} {n}
{n,} 之前的项 至少需要匹配n次 [0-9]{2,}匹配任意一个两位数或多位数 不支持 {n,} {n,} {n,}
{n,m} 指定之前的项至少匹配n次,最多匹配m次,n<m [0-9]{2,5}匹配从两位数到五位数之间的任意一个数字 不支持 {n,m} {n,m} {n,m}
| 交替匹配|两边的任意一项 ab(c|d)匹配abc或abd 不支持 | | |

POSIX字符类

POSIX字符类是一个形如[:...:]的特殊元序列(meta sequence),他可以用于匹配特定的字符范围。

正则表达式 描述 示例 Basic RegEx Extended RegEx Python RegEx Perl regEx
[:alnum] 匹配任意一个字母或数字字符 [[:alnum]]+<br />匹配一个或多个字母或数字 [:alnum] [:alnum] [:alnum] [:alnum]
[:alpha:] 匹配任意一个字母字符(包括大小写字母) [[:alpha:]]{4}<br />匹配任意3个字母 [:alpha:] [:alpha:] [:alpha:] [:alpha:]
[:blank:] 空格与制表符(横向和纵向) [[:blank:]]*<br />匹配0次或多次 空格与制表符 [:blank:] [:blank:] [:blank:] [:blank:]
[:digit:] 匹配任意一个数字字符 [[:digit:]]?<br />匹配0或1个数字 [:digit:] [:digit:] [:digit:] [:digit:]
[:lower:] 匹配小写字母 [[:lower:]]{5,}<br />匹配至少5个小写字母或5个以上小写字母 [:lower:] [:lower:] [:lower:] [:lower:]
[:upper:] 匹配大写字母 ([[:upper:]]+)?<br />匹配一个大写字母或者多个大写字母 出现过0次或者1次 [:upper:] [:upper:] [:upper:] [:upper:]
[:punct:] 匹配标点符号 [[:punct:]] [[:punct:]] [[:punct:]] [[:punct:]] [[:punct:]]
[:space:] 匹配一个包括换行符、回车等在内的所有空白符 [[:space:]]+ [:space:] [:space:] [:space:] [:space:]
[:graph:] 匹配任何一个可以看得见的且可以打印的字符 [[:graph:]] [:graph:] [:graph:] [:graph:] [:graph:]
[:xdigit:] 任何一个十六进制数(即:0-9,a-f,A-F) [[:xdigit:]]+ [:xdigit:] [:xdigit:] [:xdigit:] [:xdigit:]
[:cntrl:] 任何一个控制字符(ASCII字符集中的前32个字符) [[:cntrl:]] [:cntrl:] [:cntrl:] [:cntrl:] [:cntrl:]
[:print:] 任何一个可以打印的字符 [[:print:]] [:print:] [:print:] [:print:] [:print:]

元字符

元字符(meta character)是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,并不是所有的文本处理工具都支持。

正则表达式 描述 示例 Basic RegEx Extended RegEx Python RegEx Perl regEx
\b 单词边界 \bcool\b 匹配cool,不匹配coolant \b \b \b \b
\B 非单词边界 cool\B 匹配coolant,不匹配cool \B \B \B \B
\d 单个数字字符 b\db 匹配b2b,不匹配bcb 不支持 不支持 \d \d
\D 单个非数字字符 b\Db 匹配bcb,不匹配b2b 不支持 不支持 \D \D
\w 单个单词字符(字母、数字与_) \w 匹配1或a或_,不匹配@ \w \w \w \w
\W 单个非单词字符 \W 匹配@,不匹配1或a或_ \W \W \W \W
\n 换行符 \n 匹配一个新行 不支持 不支持 \n \n
\s 单个空白字符 X\sx 匹配x x,不匹配xx 不支持 不支持 \s \s
\S 单个非空白字符 x\Sx 匹配xkx,不匹配xx 不支持 不支持 \S \S
\r 回车 \r 匹配回车 不支持 不支持 \r \r
\t 横向制表符 \t 匹配一个横向制表符 不支持 不支持 \t \t
\v 垂直制表符 \v 匹配一个垂直制表符 不支持 不支持 \v \v
\f 换页符 \f 匹配一个换页符 不支持 不支持 \f \f

原文地址:http://blog.51cto.com/506554897/2118606

时间: 2024-08-25 21:57:09

第十五章 shell正则表达式的相关文章

深入浅出Zabbix 3.0 -- 第十五章 Zabbix 协议与API

今天是六.一儿童节,祝小朋友们节日快乐!发完此文就带我家小朋友出去玩耍了. 第十五章 Zabbix 协议与API 本章将介绍和开发相关的Zabbix协议和API的内容,通过对Zabbix协议和API的深入了解,你可以利用Zabbix协议编写客户端程序并将其嵌入的产品或系统中,并将数据发送到Zabbix server,这在无法安装Zabbixagent等程序的场景(例如专用的嵌入式系统)中非常有用.你也可以利用Zabbix API开发自己的业务系统,或灵活的与现有系统整合集成. 15.1 Zabb

第十五章 文件属性类的实现

                  第十五章    文件属性类的实现        根用户的权限也不能是无限大.必须考虑到保护用户的隐私!用户的文件内容.程序代码可设置为根用户也不能观看,只能是文件拥有者可以查看.修改.但根用户可以删除一切非根用户的文件.也可以查看用户的目录.所以,i_mode字符更改如下:      BU16 i_mode; // 描述文件的访问权限:文件的读.写.执行权限  // i_mode.15-13  ftype; 文件类型: 0-符号软连接文件, // 1-硬连接文

二十五、shell特殊符号cut命令、sort_wc_uniq命令、 tee_tr_split命令、

二十五.shell特殊符号cut命令.sort_wc_uniq命令. tee_tr_split命令. shell特殊符号下 一.shell特殊符号cut命令 特殊符号 *:通配. ?:任意一个字符. #:注释字符,加在命令前面命令就不会生效. \:脱义字符.会将后面的特殊符号(如*)还原为普通字符.示例: # ls -d 123\* ls: 无法访问123*: 没有那个文件或目录 cut命令:截取某一个字段.分隔. 格式:# cut -d '分隔字符' [-cf] n,n为数字. 可用选项: -

C和指针 (pointers on C)——第十五章:输入输出函数

第十五章 输入输出函数 这一章读完的第一感觉就是"呵呵". 如果说上过C语言课,基本上scanf()/printf()算是用的比较熟练了.尤其是那些抽象的格式说明.还有scanf()为什么要加括号. 读过本书前面的内容的话,getchar(),putchar(),gets(),puts()这些应该也问题不大. 再如果的话,你学过计算机图形学,你玩过OpenGL,听说过双缓存机制,那么fflush()也肯定弄明白了. 再加上FILE的操作,输入输出定位刷新删除改名,流的概念. 这一章就会

第十五章 链表

/** 数组与链表的区别:数组易随机访问,链表易插入和删除 链表组成:储存数据元素的数据域,储存下一结点地址的指针域 链表易于插入与删除 lists 的用法????????????????????? *///建立一个图书链表 #include<iostream> #include <string> using namespace std; struct book //第一步: 用于建立节点. class 默认为私有 struct 默认为公有 //节点组成:①数据域 ②指针域(*ne

java(第十五章)

第十五章 一.字符串类String 1.String是一个类,位于java.lang包中 2.创建一个字符串对象的2种方式: String 变量名="值"; String 对象名=new String("值"); 3.字符串的常用方法 3.1 字符串长度--length() 3.2 判断值是否相等 equals() 3.3 判断字符串对象地址是否相同 == 3.4 忽略 大小写 判断 equalsIgnoreCase() 3.5 大小写转换 toLowerCase(

CSS3秘笈复习:十三章&amp;十四章&amp;十五章&amp;十六章&amp;十七章

第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮动元素.关键字:left.right或both. (2).浮动外围元素:让包含浮动元素的<div>也浮动.选择这种方法一定要在浮动容器后面的任何元素中添加一个clear属性,确保浮动元素落到容器的下方. (3).利用overflow : hidden.另一种常见的方法是在外围的样式中添加以下属性:

第十五章 文正学院成绩录入系统

这是13年上半年给文正学院做的一个成绩录入系统,只需要实现成绩录入的功能,嫁接到文正教务系统中.实现的功能如图所示. 王川 2014/5/30 第十五章 文正学院成绩录入系统,布布扣,bubuko.com

C++ Primer Plus学习:第十五章

第十五章 友元.异常和其他 友元 友元类 表 0-1 class Tv { public: friend class Remote; } Remote类可以使用Tv的数据成员,Remote类在Tv类后定义 . 友元成员函数 表 0-2 class Tv; //前向声明 class Remote { public: void chanup(Tv &t); } class Tv { public: friend void Remote::set_chan(Tv& t, int c); } 异常