正则表达式与通配符有部分相似之处,但正则表达式更复杂也更强大。

通配符用于(完全)匹配文件名,支持通配符的命令有:ls、find、cp等;

正则表达式用于在文件中(包含)匹配字符串,支持的命令有:grep、awk、sed等。

正则表达式元字符

正则表达式由正则表达式元字符组成,而元字符又分为基本正则表达式元字符和扩展正则表达式元字符,两者基本相同,有少许差异。

基本正则表达式元字符

元字符 作用
|转义符
匹配字符
. 匹配除换行符外任意一个字符
[ ] 匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:]
[ ^ ] 匹配[ ]中字符以外的任意字符
匹配次数
* 匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符
\? 匹配前一个字符0次或1次
\+ 匹配前一个字符1次或多次
\{n\} 表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号
\{n,\} 前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字
\{n,m\} 前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母
位置锚定
^ 匹配行首,如^hello匹配以hello开头的行
$ 匹配行尾,如^$:空白行,^[:space:]*$:空(白)行
\< 或 \b 匹配词首
\> 或 \b 匹配词尾
\<模式\> 匹配完整单词(非特殊字符组成的连续字符),支持模式
分组与引用
\(模式\) 将1个或多个字符当作一个整体处理,支持模式
\n 第n组括号之间的模式(即分组)所匹配到的字符

扩展正则表达式元字符

元字符 作用
|转义符
匹配字符
. 匹配除换行符外任意一个字符
[ ] 匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:]
[ ^ ] 匹配[ ]中字符以外的任意字符
匹配次数
* 匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符
? 匹配前一个字符0次或1次
+ 匹配前一个字符1次或多次
{n} 表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号
{n,} 前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字
{n,m} 前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母
位置锚定
^ 匹配行首,如^hello匹配以hello开头的行
$ 匹配行尾,如^$:空白行,^[:space:]*$:空(白)行
\< 或 \b 匹配词首
\> 或 \b 匹配词尾
\<模式\> 匹配完整单词(非特殊字符组成的连续字符),支持模式
分组与引用
(模式) 将1个或多个字符当作一个整体处理,支持模式
\n 第n组括号之间的模式(即分组)所匹配到的字符
a b

bash编程-正则表达式的更多相关文章

  1. bash编程之多分支if 语句及for循环

    第十七章.bash编程之多分支if 语句及for循环 if语句三种格式 多分支if语句练习 for循环 17.1.if语句的三种格式 单分支if语句 if condition;then 条件为真执行的 ...

  2. bash编程总结

    bash应该是目前Linux上最流行的shell脚本解释程序了(还有个shell叫dash,我太讨厌这个东东了.),只要你在linux上工作,并且希望自己能够工作得更愉悦,那么你应该熟悉最基本的bas ...

  3. Linux中bash编程

    bash编程也叫shell编程 预定义变量         $? 最后一次执行的命令的返回状态.如果这个变量的值为0,证明上一个命令正确的执行:如果这个变量返回的值非0(具体是那个数,有命令自己来决定 ...

  4. bash编程基础

    bash变量 变量命名: 1.不能使用程序中的关键字(保留字) 2.只能使用数字.字母和下划线,且不能以数字开头 3.要见名知义 变量类型: 数值型:精确数值(整数),近似数值(浮点型) 字符型:ch ...

  5. bash编程之循环控制:

    bash编程之循环控制: for varName in LIST; do 循环体 done   while CONDITION; do 循环体 done   until CONDITION; do 循 ...

  6. [shell] Bash编程总结

    由于工作需要,之前的几个月写了一些Bash脚本,主要完成自动测试.打包.安装包等.虽然相比C++编程,要简单.傻瓜,但其在类Unix系统中可以大大提高工作的效率.所以在此对脚本编程过程中一些注意事项进 ...

  7. bash编程的信号捕获:

    bash编程的信号捕获: kill -l KILL无法捕捉:   trap 'COMMAND' SIGNAL,    信号捕捉用于:在中途中止时做一些清理操作.   一. trap捕捉到信号之后,可以 ...

  8. 怎样用 Bash 编程:逻辑操作符和 shell 扩展

    学习逻辑操作符和 shell 扩展,本文是三篇 Bash 编程系列的第二篇. Bash 是一种强大的编程语言,完美契合命令行和 shell 脚本.本系列(三篇文章,基于我的 三集 Linux 自学课程 ...

  9. 怎样用 Bash 编程:语法和工具

    让我们通过本系列文章来学习基本的 Bash 编程语法和工具,以及如何使用变量和控制运算符,这是三篇中的第一篇. Shell 是操作系统的命令解释器,其中 Bash 是我最喜欢的.每当用户或者系统管理员 ...

随机推荐

  1. ubuntu vsftp

    转自:https://www.cnblogs.com/java-synchronized/p/6935711.html 12点多了,擦!做个码农真不容易呀! 系统:Ubuntu16.04 安装:FTP ...

  2. 代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)

    代码: 两列图片瀑布流(一次后台取数据,无ajax,图片懒加载.下拉后分批显示图片.图片高度未知,当图片onload后才显示容器) [思路]: 图片瀑布流,网上代码有多种实现方式,也有各类插件.没找到 ...

  3. 学习笔记:jqueryui

    Jquery UI cdn.bootcss.com <!-- jquery --> <script src="http://cdn.bootcss.com/jquery/1 ...

  4. python——列表入门

    学习列表先分析一段程序: list = ['zx', 'xkd', 1997, 2018] list1=list+[1,2,3]#列表拼接 list2=[list,list1] print('嵌套的列 ...

  5. 阿里云视频直播PHP-SDK

    阿里云 视频直播 配置 及 PHP-SDK 接入教程准备工作域名管理配置鉴权地址生成器及DEMO演示-熟悉鉴权接入SDK推流回调的配置阿里云 视频直播 配置 及 PHP-SDK 接入教程 个人感觉,阿 ...

  6. 直接添加viewController中的view时的注意事项

    直接添加viewController中的view时需要注意一个问题,比如: MyTestViewController *vc = [MyTestViewController new]; [self.v ...

  7. TensorFlow学习之二

    二.常用操作符和基本数学函数 大多数运算符都进行了重载操作,使我们可以快速使用 (+ - * /) 等,但是有一点不好的是使用重载操作符后就不能为每个操作命名了. 1  算术操作符:+ - * / % ...

  8. java学习--构造方法

    构造方法的作用:创建对象并初始化对象 定义规则:构造方法名与类名相同且没有返回值.(构造方法不需要设置返回值类型,包括void) 在没有定义构造方法是,编译器会自动为类添加形如  类名 () {}  ...

  9. 一直觉得用java很不顺心

    一直觉得用java很不顺心,今儿想明白一个事情.如果把汇编比作石器时代,c作为冷兵器时代,c++作为工业革命之后的热兵器及机械化时代,而c#之类则进入了现代科学世界,至于go,python之流,大概可 ...

  10. SQL Server中有关约束(constraint)的一些细节

    本文出处:http://www.cnblogs.com/wy123/p/7350265.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...