吹静静

欢迎QQ交流:592590682

一、正则表达式

1、什么是正则表达式

正则表达式是用于描述字符排列和匹配模式的一种语法。他主要用于字符串的模式分割匹配查找替换操作。

2、正则表达式与通配符

>>> 正则表达式用来在文件中匹配符合条件的字符串,正则表达式包含匹配。grep、awk、sed等命令可以支持正则表达式。

>>>通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。

正则:包含匹配

通配符:完全匹配

3、基础正则表达式

 

4 、“ * ”前面匹配0次,或任意多次

(1):" a* "

# 匹配所有的内容,包括空白行

 (2):" aa* "

# 匹配至少包含一个a的行

 (3):" aaa* "

# 匹配至少包含两个连续a的字符串

 (4):" aaaaa* "

# 匹配至少包含五个连续a的字符串

 

4、“ . ”匹配除换行符外任意一个字符

(1):“ s..d

# " s..d " 会匹配s和d这两个字母之间一定有两个字符的单词

(2):“ s.*d

#  “ s.*d ” 匹配在s和d这两个字母之间有任意字符

 (3):“ .*

# “ .* ” 匹配所有内容

5、“ ^ ” 匹配行首,“ $ ” 匹配行尾

(1):“ ^M

# 匹配以大写字母 M 开头的行

(2):" n$"

# 匹配以小写字母 n 结尾的行

(3):“ ^$

# 会匹配空白行

6、“ [ ] ” 匹配中括号中指定的任意一个字符,只匹配一个字符(和通配符功能差不多)

(1):“ s[ao]id ” 

# 匹配 s 和 i 字母中,要不是 a 、要不是 o

(2):“ [0-9]

 # 匹配任意一个或多个数字

 

(3):“ ^[a-z]

 # 匹配用小写字母开头的行

 

7、" [^] " 匹配除中括号的字符以外的任意一个字符(去反)

(1):" ^[^a-z] "

# 匹配不用小写字母开头的行

(2):" ^[^a-zA-Z] "

# 匹配不用字母开头的行

 

8、" \ " 转义符

" \.$ "

# 匹配使用" . " 结尾的行(把特殊字符的含义取消掉)

 

9、" \{n\} " 表示其前面的字符恰好出现 n 次

1):" a\{3\} "

 

# 匹配 a 字母连续出现三次的字符串

2):" [0-9]\{3\} "

# 匹配包含连续的三个数字的字符串

 

 

10、" \{n,\} " 表示其前面的字符出现不小于n次(定义不准确,自己实践)

" ^[0-9]\{3,\}[a-z] "

# 匹配最少用连续三个数字开头的行

加上定界符(定义不准确,自己实践)

 

11、"\{n,m\} " 匹配其前面的字符至少出现n次,最多出现m次

" sa\{1,3\}i "

# 匹配在字母s和字母i之间最少一个a,最多三个a

 

 12、几个例子

(1):[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}

# 匹配日期格式YYY-MM-DD

 

(2):[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}.[0-9]\{1,3\}

# 匹配IP地址

 

 

 

posted on 2018-02-07 09:58  吹静静  阅读(172)  评论(0编辑  收藏  举报