Linux正则表达式

一、基础正则表达式

(一)基础字符列表

正则表达式就是一套处理字符串的规则和方法。以行为单位对字符串进行处理,达到快速过滤或者替换字符串的目的。

下面是正则表达式的特殊字符:

字符 说明
^ 以什么字符开头
$ 以什么字符结尾
. 有且只能代表任意一个字符
转义字符,针对有特殊意义的字符,比如:.
* 重复零个或者多个前面的一个字符
.* 匹配所有字符
[] 匹配字符集中的任意一个字符,注意与()的区别,()可以是整个组中的多个字符
[^] 匹配不是^后面的字符
{n,m} 重复前一个任意字符n到m次,注意特殊字符进行转义使用{n,m} 
{n,} 至少重复前一个任意字符n次,注意特殊字符进行转义使用{n,}
{n} 重复n次前面任意一个字符n次,注意特殊字符进行转义使用{n}

(二)实例

1、测试文件

[root@localhost project]# cat test.txt 
I like code,book
what do you like
my friends like riding,movie

2、测试

# 匹配以I开头的所有字符
[root@localhost project]# grep "^I" test.txt 
I like code,book. 

# 匹配以like结尾的字符串
[root@localhost project]# grep "like$" test.txt 
what do you like

# 匹配you
[root@localhost project]# grep "y.u" test.txt 
what do you like

#匹配字符o零次或者多次
[root@localhost project]# grep "o*" test.txt 
I like code,book 
what do you like
my friends like riding,movie

 # 字符集匹配
 [root@localhost project]# grep "o[dv]" test.txt
 I like code,book
 my friends like riding,movie

 # 匹配非字符集中的字符
 [root@localhost project]# grep [^a-y] test.txt
 I like code,book
 what do you like
 my friends like riding,movie

 # 重复前一个字符{n,m}
 [root@localhost project]# grep "o{2,3}" test.txt
 I like code,book
 [root@localhost project]# grep "o{1,}" test.txt
 I like code,book
 what do you like
 my friends like riding,movie
 [root@localhost project]# grep "o{2}" test.txt
 I like code,book

二、扩展正则表达式 

(一)扩展字符列表

字符 说明
+ 重复前一个任意字符一次或者多次
重复前一个任意字符零次或者一次
|
() 查找”用户组“中的字符串

(二)实例

# 只能使用egrep,grep失效
[root@localhost project]# egrep "o+k" test.txt 
I like code,book

# 重复前一个字符零次
[root@localhost project]# egrep "l?ike" test.txt 
I like code,book 
what do you like
my friends like riding,movie

#
[root@localhost project]# egrep "you|movie" test.txt 
what do you like
my friends like riding,movie

# 用户组
[root@localhost project]# egrep "(oo|i)k" test.txt 
I like code,book 
what do you like
my friends like riding,movie
原文地址:https://www.cnblogs.com/shenjianping/p/13934375.html