Linux之正则表达式
简述
正则表达式是什么?
由一类特殊字符及文本字符所编写的模式,其中有些元字符不表示字符字面意义,而表示控制或统配的功能.当然正则表达式适用于所有语言.
Linux中支持正则表达式的程序
grep,sed,awk,vim,less,nginx等
正则表达式的分类
基本正则表达式: BRE
扩展正则表达式: ERE
基本正则表达式
字符匹配
| 字符 | 意义 |
| . | 匹配任意字符 |
| [] | 匹配指定范围内的单个字符 |
| [^] | 匹配指定范围外的单个字符 |
| [:alnum:] | 匹配数字和字母 |
| [:alpha:] | 匹配任何英文大小写字符 |
| [:lower:] | 匹配小写字母 |
| [:upper:] | 匹配大写字母 |
| [:digit:] | 匹配十进制数字 |
| [:xdigit:] | 匹配十六进制数字 |
| [:space:] | 匹配水平和垂直的空白字符 |
| [:blank:] | 匹配空白字符(制表符和空白格) |
| [:graph:] | 匹配可打印的非空白字符 |
| [:punct:] | 匹配标点符号 |
| [:print:] | 匹配可打印字符 |
| [:cntrl:] | 匹配不可打印的控制字符 |
匹配次数
用在指定次数的字符后面,用于指定前面的字符出现的次数.
| 字符 | 意义 |
| * | 匹配前面的字符,任意次包括0次 |
| .* | 匹配前面任意字符任意次数 |
| \? | 匹配前面的字符0次或者1次 |
| \+ | 匹配前面的字符至少1次 |
| \{n\} | 匹配前面的字符n次 |
| \{m,n\} | 匹配前面的字符至少m次,至多n次 |
| \{,n\} | 匹配前面的字符至少出现n次 |
| \{n,\} | 匹配前面的字符至多出现n次 |
位置锚定
定位出现的位置
| 字符 | 意义 |
| ^ | 行首锚定,用于模式最左侧 |
| $ | 行尾锚定,用于模式最右侧 |
| ^PATTERN$ | 用于匹配整行 |
| ^$ | 匹配空行 |
| ^[[:space:]] | 匹配空行 |
| \< 或 \b | 词首锚定,用于匹配单词模式最左侧 |
| \> 或者 \b | 词尾锚定,用于匹配单词模式最右侧 |
| \<PATTERN\> | 匹配整个单词 |
分组
将一个或者多个字符捆绑在一起,单做一个整体进行处理
\( \) 分组
\1 \2 分组的后向引用, \1 \2 调用第一个第二个分组匹配的结果,以最左边括号
如下:
echo abc cc adc abc dd ace | grep -o "\(a.c\).*\1"
结果: abc cc abc abc
扩展正则表达式
简单来说就是去掉了转移符,是匹配模式更简便直观.
字符匹配
| 字符 | 意义 |
| . | 任意单个字符 |
| [] | 指定范围的单个字符 |
| [^] | 不在指定范围的字符 |
匹配次数
| 字符 | 意义 |
| * | 匹配前面的字符出现任意次数 |
| ? | 匹配前面的字符出现0次或者1次 |
| + | 匹配前面的字符0次或者1次 |
| {n} | 匹配前面的字符出现n次 |
| {m,n} | 匹配前面的字符出现至少m次至多n次 |
位置锚定
| 字符 | 意义 |
| ^ | 行首锚定 |
| $ | 行尾锚定 |
| \< 或 \b | 词首锚定 |
| \> 或 \b | 词尾锚定 |
分组
() 分组 \1 \2 分组后向引用
作者:闫世成
出处:http://cnblogs.com/yanshicheng
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题或建议,请联系上述邮箱,非常感谢。

浙公网安备 33010602011771号