什么是正则表达式?A regular expression is a set of characters that specify a pattern。顾名思义正则表达式是用于匹配固定模式的字符串的一种表达方式。正则表达式分很多种,Linux环境下不同的工具对所支持的正则表达式类型也有所不同。我们参考wiki(https://en.wikibooks.org/wiki/Regular_Expressions)给出的正则表达式类型,不讨论那些马上废弃和日常运维时非常少见的类型,主流的分类有:
- Basic Regular Expression
不严格的区分的话,可以和POSIX Basic Regular Expression看做一回事,主要用于Unix下的命令行工具,比如grep、sed的默认匹配方式
- Extended Regular Expression
更加高级的扩展,可以被grep通过-E调用,被sed通过-r调用,是awk的默认支持模式
- Shell Regular Expressions
用于Unix中普通命令对于文件名的匹配
BRE和ERE
这俩种表达式在大部分情况下其实是相同的(除去使用符号"\"特殊标注的):
参数 | 功能 |
---|---|
. | 点号,匹配任意单个字符 |
[ ] | 匹配指定范围内的任意单个字符,如[a-z]小写字母、[a-Z]全字母 |
[^ ] | 过滤掉指定范围内的任意单个字符,如[^a-z]非小写字母 |
* | X*匹配前面的字符任意次(包含0次) |
.* | .和*组合使用,表示匹配任意字符任意长度(包含0次) |
^ | 定位到头部,或^XXX匹配以XXX开头的字符串 |
$ | 定位到尾部,或XXX$匹配以XXX结尾的字符串 |
^$ | ^和$组合使用,匹配空白行 |
BRE:\{n\} | X\{n\}精确匹配前面的字符出现的次数(n次) |
ERE:{n} | X{n}精确匹配前面的字符出现的次数(n次) |
BRE:\{m,\} | 前面的字符至少出现m次 |
ERE:{m,} | 前面的字符至少出现m次 |
BRE:\{m,n\} | 前面的字符出现m到n次之间 |
ERE:{m,n} | 前面的字符出现m到n次之间 |
BRE:\{,n\} | 匹配最多n次 |
ERE:{,n} | 匹配最多n次 |
BRE:\+ | 前面的字符出现1次或者多次,如ab\+c表示"abc","abbc"等 |
ERE:+ | 前面的字符出现1次或者多次,如ab+c表示"abc","abbc"等 |
BRE:\? | 前面的字符出现0次或者1次,如ab\?c表示"ac"或者"abc" |
ERE:? | 前面的字符出现0次或者1次,如ab?c表示"abc"或者"abbc" |
BRE:\(\) | 子块,比如\(ab\)* 可以表示 "", "ab", "abab", "ababab"等 |
ERE:() | 子块,比如(ab)* 可以表示 "", "ab", "abab", "ababab"等 |
BRE:\| | 或关系,比如abc\|def表示"abc"或者"def" |
ERE:| | 或关系,比如abc|def表示"abc"或者"def" |
SRE
这种表达式支持的扩展非常少,只适合Unix下Shell环境里匹配文件名称。
参数 | 功能 |
---|---|
? | 问号,匹配任意单个字符 |
[ ] | 匹配指定范围内的任意单个字符 |
[! ] | 过滤掉指定范围内的任意单个字符 |
* | 匹配前面的字符任意次(包含0次) |
SRE除去上面这几种,还有?(pattern-list)、*(pattern-list)、+(pattern-list)、@(pattern-list)、!(pattern-list)这些用的不是很多的表达式。
评论列表,共 0 条评论
暂无评论