- 基本正则表达式:
- 字符匹配:
- 匹配任意单个字符:.
- 匹配指定范围内的任意单个字符:[](注意匹配规则,匹配上的字符不再做匹配,括号内如果有多个单个字符或者比如[a0-9c],表示匹配a或者0-9或者c),括号内输入点号[.]就是普通字符点
- 匹配指定范围外的任意单个字符:[^]
- [:alnum:] 字母和数字
- [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
- [:lower:] 小写字母 [:upper:] 大写字母
- [:blank:] 空白字符(空格和制表符)
- [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
- [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
- [:digit:] 十进制数字 [:xdigit:]十六进制数字
- [:graph:] 可打印的非空白字符
- [:print:] 可打印字符
- [:punct:] 标点符号
- 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
- 匹配其前面的字符0或多次: * 如:a*b 表示a出现任意次后紧跟b
- 匹配任意长度的字符: .* 表示 . 出现任意次
- 匹配其前面的字符一次或0次:\? 需要加“”或‘’
- 匹配其前面的字符1次或多次:\+ 前面的字符至少出现1次
- 匹配其前面的字符m次:\{m\}
- 匹配其前面的字符至少m次,最多n次:\{m,n\} \{0,n\}最多n次;\{m,\}至少m次
- 位置锚定:定位出现的位置
- 锚定行首,此元字符后面的一个或多个字符必须出现在行首:^
- 锚定行尾,此字符前面的一个或多个字符必须出现在行尾:$
- ^PATTERN$:用模式来匹配整行
- ^$ 或 ^[[:space:]]*$ :空白行
- 锚定单词首部,表示\<后的字符必须是单词的开头(单词匹配时只有字母、数字和下划线算作单词的一部分,其他符号都不是)首部出现:\<或者\b
- 锚定词尾,其后面的任意字符必须作为单词尾部出现:\>或者\b
- 精确匹配单词:\<root\>
- 匹配整行,不能匹配单词了:\<.*\>
- 例:找出/etc/passwd文件中的两位数或三位数
- # grep “\<[0-9]\{2,3\}\>”/etc/passwd如果不锚定词首词尾会出现3个数字以上的行
- 分组:\(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(ab\)* 表示ab看作整体,ab可以出现任意次
- 注意:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为后向引用
- \1:引用第一个左括号以及与之对应的右括号所包括的所有内容
- \2:引用第2个左括号以及与之对应的右括号所包括的所有内容
- \3:引用第3个左括号以及与之对应的右括号所包括的所有内容
- 字符匹配:
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96521