[关闭]
@breakerthb 2019-02-16T08:58:04.000000Z 字数 1018 阅读 1452

正则表达式

Linux


1.基础正则表达式

语系:LANG=C
特殊符号:

匹配模式 说明 举例
[:alnum:] 字母与数字 0-9,A-Z,a-z
[:alpha:] 字母 A-Z,a-z
[:blank:] 空格 和 [Tab]
[:cntrl:] 键盘上控制按键:CR, LF, Tab, Del ASCII控制字符
[:digit:] 数字 0-9
[:graph:] 除了空格符(空格和Tab)以外的全部按键
[:lower:] 小写字母 a-z
[:print:] 可打印字符 代表任何可以被打印的字符
[:punct:] 标点符号字符 标点符号:“‘?!;:# $
[:upper:] 大写字母 A-Z
[:space:] 任何产生空白的字符 空格、Tab、CR
[:xdigit:] 十六进制数 0-9,A-F,a-f

2.基础正则表达式符号

字符 说明 用法 举例
|忽略字符 忽略正则表达式中特殊字符的原有含义
^ 行首 ^wordword在行首 grep -n '^#' test.txt查找行首为#
$ 行尾 word$word在行尾 grep -n '!$' test.txt查找!结尾
\< 从匹配正则表达式的行开始
> 到匹配正则表达式的行结束
. 一个任意字符 a.b结果是3个字符 a..b结果是4个字符
\|转义字符
* 重复 重复0个或无穷多个前一个字符 ls -l * = ls | grep -n '^a.*' grep 'go*d' test.txt得到gdgodgoodgoood......
.* 表示任意多个任意字符
[ ] 匹配单个字符 [A]匹配字符A
[list] 匹配集合中的某个字符 [abcd]匹配abcd任意一个字符 grep -n 'a[alf]y' test.txt
[n1-n2] 选取范围 [A-Z]匹配A-Z之间的任意一个字母 grep '[A-Z]-00' test.txt grep '[a-zA-Z]'
[^list] list的补集 [^abcd]匹配除了abcd的任意一个字符
{n,m} 连续前一个字符 {n,m}匹配n~m个前一个字符 grep -n 'go{2,3}g' test.txt找g与g之间有2~3个o

3.扩展正则表达式

字符 说明 用法
+ 重复一个或一个以上的前一个RE字符 egrep -n 'go+d' test.txt
? 零个或一个前一个字符 egrep 'go?d' test.txt得到gdgod
| 或的方式找字符串
() 找出组字串 egrep -n 'g(la|oo)d' test.txt得到gladgood
()+ 多个重复组判别 egrep 'A(xyz)+C'A开头,C结尾,中间n组xyz
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注