正则表达式

正则表达式是一种基础的模式匹配技术。大多数文本处理工具都支持正则表达式。借助适合的正则表达式,我们可以对文本文件执行过滤、剥离(strip)、替换、搜索等操作。 
 

位置标记

1、查找abc开头的行

[root@linux test_shell]# grep "^abc" << end
> abc123
> 123abc
> end
abc123

2、查找abc结尾的行

[root@linux test_shell]# grep "abc$" << end
> abc123
> 123abc
> end
123abc

标识符

 1、查找包含abc的行

[root@linux test_shell]# grep "abc" << end
> abc123
> 123abc
> end
abc123
123abc

2、匹配任意一个字符

[root@linux test_shell]# grep "abc." << end
> abc
> abc1
> abc22
> end
abc1
abc22

3、匹配 [ ] 内的任意一个字符

[root@linux test_shell]# grep "abc[0-9]" << end
> aaa
> abcd
> abc333
> end
abc333

4、匹配不在 [ ] 内的任意一个字符

[root@linux test_shell]# grep "abc[^0-9]" << end
> abc3
> abcd
> abc%
> end
abcd
abc%

数量修饰符

1、? 匹配之前的项1次或0次。注意:? 要用转义字符转义

[root@linux test_shell]# grep "ab?c" << end
> ac
> abc
> abbc
> end
ac
abc

 2、+ 匹配之前的项1次或多次。注意:+ 要用转义字符转义

[root@linux test_shell]# grep "ab+c" << end
> ac
> abc
> abbc
> end
abc
abbc

3、* 匹配之前的项0次或多次

[root@linux test_shell]# grep "ab*c" << end
> ac
> abc
> abbc
> end
ac
abc
abbc

4、{n} 匹配之前的项n次。注意:{ } 要用转义字符转义

[root@linux test_shell]# grep "ab{3}c" << end
> ac
> abc
> abbbc
> end
abbbc

5、{n,} 之前的项至少需要匹配n次

[root@linux test_shell]# grep "ab{2,}c" << end
> abc
> abbc
> abbbc
> end
abbc
abbbc

6、{n,m} 之前的项所必须匹配的 最小次数 - 最大次数

验证工号

[root@linux test_shell]# grep -w "^a[0-9]{4,6}" << end
> a123
> a1234
> a123456
> a12345678
> end
a1234
a123456

备注:grep -w ---> 精准匹配

验证QQ邮箱

[root@linux test_shell]# grep -w "^[1-9][0-9]{4,11}@qq.com" << end
> 1234@qq.com
> 12345678@qq.com
> 123456789123456@qq.com
> 12345678@qq.cn
> 12345678@oo.com
> end
12345678@qq.com

其他

1、() 将括号中的内容视为一个整体。注意:() 要用转义字符转义

[root@linux test_shell]# grep "abc(123)+" << end
> abc
> abc123
> abc123123
> end
abc123
abc123123

2、| 指定了一种选择结构,可以匹配 | 两边的任意一项。注意:| 要用转义字符转义

[root@linux test_shell]# grep "a(b|c)" << end
> ab
> ac
> abc
> end
ab
ac
abc
原文地址:https://www.cnblogs.com/lfjn/p/11419417.html