在shell环境中,通配符能够匹配文本范围相当有限。正则表达式是一种用于文本匹配的形式小巧、且高度针对性的编程语言。例如: @[a-z0-9]+\.[a-z]+ 就是一个能匹配电子邮件的正则表达式。
正则表达式的基础组成部分如下所示:
正则表达式 描述 示例
^ 行起始标记 ^a匹配以a起始的行
$ 行尾标记 a$匹配以a结尾的行
. 匹配任意一个字符 a.匹配ab,ac,ad,....但不能匹配abc,他只能匹配单个字符
[] 匹配包含在[]中的任意一个字符 [09]匹配0或者9
[^] 匹配除了[^]的任意一个字符 9[^123]匹配94,95,...或者9a
[-] 匹配[-]范围中的任意一个字符 [0-9]匹配0,1,2,3,4,5,6,7,8,9
? 匹配之前的一次或者零次 98?7匹配987,97
* 匹配之前的任意次 987*6匹配986,9876,9876,98776,...
+ 匹配之前至少一次 987*6匹配9876,9876,98776,...
() 创建一个用于匹配的子串 ma(123)x匹配max或者ma123x
{n} 匹配之前的项n次 [0-9]{3}相当于[0-9][0-9][0-9],即匹配任意一个三位数
{n,} 匹配之前的项至少n次 [0-9]{3,}匹配任意一个除两位数之外的多位数
{n,m} 匹配n到m次
| 匹配两边的任意一项 Oct(123 | 456 )匹配Oct123或者Oct456
\ 转义特殊字符 a\.b匹配a.b
初识正则,如果谁有更好的链接,求分享!