Shell编程之正则表达式

文章目录

          • 1.正则表达式
            • * 前一个字符匹配0次或者任意次
            • . 匹配除了换行符外任意一个字符
            • " ^ " 匹配行首, "$" 匹配行尾
            • "[]" 匹配中括号中指定的任意一个字符,只匹配一个字符
            • "[^]" ^在中括号中代表取反,匹配除中括号的字符以外的任意一个字符
            • "\" 转义符
            • "\{n\}" 表示其前面的字符恰好出现n次,需要加定界符,否则取出来的不一定只有三个
            • "\[n,\]" 表示其前面的字符出现不小于n次
            • "\[n,m\]" 表示其前面的字符至少出现n次,最多出现m次

1.正则表达式

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

.正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。
grep ,awk,sed 等命令可以支持正则表达式。
通配符用来匹配符合条件的文件名,通配符是完全匹配,所以只能使用Shell自己的通配符来匹配

基本正则表达式:
*前一个字符匹配0次或者任意次
. 匹配除了换行符外任意一个字符
" ^ " 匹配行首, “$” 匹配行尾
“[]” 匹配中括号中指定的任意一个字符,只匹配一个字符
“” 转义符
“[^]” ^在中括号中代表取反,匹配除中括号的字符以外的任意一个字符
“{n}” 表示其前面的字符恰好出现n次,需要加定界符,否则取出来的不一定只有三个
“[n,]” 表示其前面的字符出现不小于n次
“[n,m]” 表示其前面的字符至少出现n次,最多出现m次

正则表达式:

* 前一个字符匹配0次或者任意次

例如:
“a*” #匹配所有内容,包括空白行,因为a可以为0次
“aa*” #匹配至少包含一个a的行
“aaa*” #匹配至少包含两个连续a的字符串
“aaaaa*” #匹配至少包含四个连续a的字符串

. 匹配除了换行符外任意一个字符

“s…d” #会匹配在s和d这两个字母之间一定有两个字符的单词
"s.d" #会匹配在s和d字母之间有任意字符
".
" #会匹配所有内容

" ^ " 匹配行首, “$” 匹配行尾

eg
“^M” #匹配以M开头的行
“nKaTeX parse error: Expected 'EOF', got '#' at position 5: " #̲匹配n结尾的行 "^” #匹配空白行

“[]” 匹配中括号中指定的任意一个字符,只匹配一个字符

eg
“s[ao]id” #匹配s 和id 中为a 或者o
“[0-9]” #匹配任意一个数字
" ^ [a-z]" #匹配小写字母开头的行

“[^]” ^在中括号中代表取反,匹配除中括号的字符以外的任意一个字符

eg
[a-z]” #匹配不用小写字母开头的行
[a-zA-Z]” #匹配不用字母开头的行

“” 转义符

eg
“.$” #匹配使用 . 结尾的行

“{n}” 表示其前面的字符恰好出现n次,需要加定界符,否则取出来的不一定只有三个

eg
“a{3}” #匹配a字母连续出现三次的字符串
“[0-9]{3}” #匹配包含连续的三个数字的字符串

“[n,]” 表示其前面的字符出现不小于n次

eg
" ^ [0-9]{3,}[a-z]" #匹配最少用连续三个数字开头的行

“[n,m]” 表示其前面的字符至少出现n次,最多出现m次

eg
“sa{1,3}i” #匹配在字母s和i之间有最少一个a,最多三个a

[0-9]{4}-[0-9]{2}-[0-9]{2} #匹配日期格式YYYY-MM-DD

[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} #匹配IP

你可能感兴趣的:(Linux)