正则表达式

什么是正则表达式?

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式是烦琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。正则表达式默认工作在贪婪模式即尽可能长的匹配。
REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能
程序支持:grep,sed,awk,vim, less,nginx,varnish等
正则表达式按照模式的不同分两类:基本正则表达式:BRE、扩展正则表达式:ERE
元字符分类:字符匹配、匹配次数、位置锚定、分组
也可以 man 7 regex查看正则表达式的帮助文档

基本正则表达式

字符匹配

元字符 含义
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符([abcd]匹配abcd其中的任任意一个字符)
[ ^ ] 匹配指定范围外的任意单个字符符([^abcd]:abcd以外的任意字符)
[:upper:] 表示任意的大写字母
[:alnum:] 表示任意字母和数字符
[:alpha:] 代表任何英文大小写字符A-Z, a-z
[:lower:] 表示小写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…) )
[:digit:] 十进制数字符
[:xdigit:] 十六进制数字符
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号

匹配次数

用在要指定次数的字符后面,用于指定前面的字符要出现的次数

元字符 含义
. 匹配任意单个字符
* 匹配 前面的字符任意次,包括0次
.* 任意 长度的任意字符
\? 匹配 其前面的字符0 或1次
\+ 匹配 其前面的字符至少1次
\{n\} 匹配 前面的字符n次
\{m,n\} 匹配 前面的字符至少m 次,至多n次
\{,n\} 匹配 前面的字符至多n次
\{n,\} 匹配 前面的字符至少n次

位置锚定

元字符 含义
^ 行尾锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\>或\b 词首锚定,用于单词模式的左侧
\<或\b 词尾锚定;用于单词模式的右侧
\<PATTERN\> 匹配整个单词

分组

\(\)将一个或多个字符捆绑在一起,当作一个整体进行处理
(root)+分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3等
例如: (string1+(string2)*\)
\1 :string1+(string2\)*
\2 :string2
后向引用是引用前面的分组括号中的模式所匹配字符 , 而非模式本身
或者:\|
示例:a\|b: a 或b 、C\|cat: C 或cat、 \(C\|c\ )at:Cat 或cat

扩展正则表达式

扩展正则表达式 ERE Extended Regular Expressions 比基本正则表达式BRE 拥有更强大的功能,语法看起来更加简洁。

扩展正则的字符匹配

元字符 含义
. 匹配任意单个字符
[] 匹配[]指定范围内的任意单个字符
[ ^] 匹配[]指定范围外的任意单个字符符
[:upper:] 任意的大写字母
[:alnum:] 字母和数字符
[:alpha:] 代表任何英文大小写字符 A-Z, a-z
[:lower:] 任意的小写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…) )
[:digit:] 十进制数字符
[:xdigit:] 十六进制数字符
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号

扩展正则的匹配次数

用在要指定次数的字符后面,用于指定前面的字符要出现的次数

元字符 含义
. 匹配任意单个字符
* 匹配 前面的字符任意次,包括0次
.* 任意 长度的任意字符
? 匹配 其前面的字符0 或1次
+ 匹配 其前面的字符至少1次
{n} 匹配 前面的字符n次
{m,n} 匹配 前面的字符至少m 次,至多n次
{,n} 匹配 前面的字符至多n次
{n,} 匹配 前面的字符至少n次

扩展正则的位置锚定

元字符 含义
^ 行尾锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\>或\b 词首锚定,用于单词模式的左侧
\<或\b 词尾锚定;用于单词模式的右侧
<string> 匹配整个单词

原创文章,作者:geekdeedy,如若转载,请注明出处:http://www.178linux.com/77348

(0)
geekdeedygeekdeedy
上一篇 2017-06-01 17:56
下一篇 2017-06-01 21:23

相关推荐

  • N22-第24周博客作业——-虚拟化技术

    虚拟化技术—基础(1) 本文围绕下面3个问题进行对虚拟化技术展开讨论: 1、虚拟化技术实现方式有哪些?虚拟化技术分哪些? 2、请分别通过kvm、xen工具来实现虚拟化系统的部署? 3、请描述openstack、kvmqemu-kv、libvirt及xen之间的关系。 虚拟化诞生和发展     1961年 IBM709…

    Linux干货 2016-10-17
  • linux内核及centos系统启动流程

    Linux组成 Linux: kernel+rootfs(根文件系统) kernel功能: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs:程序和glibc  库:函数集合, function, 调用接口(头文件负责描述)      过程调用:proce…

    Linux干货 2016-09-10
  • rsyslog记录日志于mysql

    rsyslog记录日志于mysql:     前提:准备好msql server或mariadb server;     (1) 安装rsyslog连接至mysql server的驱动模块;        &n…

    Linux干货 2016-12-05
  • CentOS启动流程及Shell脚本编程练习

    一、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 第一步:POST加电自检 主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主要代表为CMOS)芯片上的BIOS(Basic Input/Output System)程序。 第二步:Boot Sequence(选择启动设备以加…

    2017-11-26
  • 文件搜索者-find命令详解

    1. 文件查找:          在linux系统中由于文件的众多,往往需要在众多的文件当中查找某一个文件,如果时间一长,很难记得文件存放至何处,不过,这一点,你不比担心,因为开发人员为我们提供了强大的文件搜索工具,下面将介绍两款常用的文件查找工具locate,和find,这两…

    Linux干货 2016-08-15