正则表达式
正则表达式,是用于描述字符排列和匹配模式的一种语法规则。他的主要用于字符串的分割,匹配,查找及替换操作。
通俗来说正则表达式是用来匹配文化部中字符串的方法,他先将整个文本分成一行一行的字符串 ,接着从字符串里搜索是否有符合正则表达式的字符串,如果有则匹配成功
“grep 、awk 、sed 、vi 等 都支持正则表达式”
“ls 、find 、cp 等 不支持”
在正则表达式中我们把特殊字符成为云字符。在shell中元字符分为基础元字符和扩展元字符
基础元字符
1、 * 匹配前面的一个字符或子表达式0次或任意多次
如:a*hello匹配所有0个或多个a后,紧跟hello的行。即hello前面可以有任意多个a
2、. 匹配除换行符和回车符(“\n”和"\r")外的任意一 个字符
如:l…e匹配包含一个l,后跟两个任意字符,然后跟一个e的行
3、^ 匹配行首
如,^hello 会匹配以 hello 开头的行
4、$ 匹配行尾
如,hello$ 会匹配以 hello 结尾的行
5、[] 匹配中括号内的任意一个字符(只匹配一个)
如, [aoeiu]匹配任意一个元音字母
6、[^] 不匹配中括号里的字符
如,【^0-9】匹配任意一位非数字字符
7、\ 转义符
用于取消特殊符号的含义,使该特殊字符成为普通字符
8、{n} 使前面的字符出现n次
如,[0-9]{4} 匹配4位数字
9、{n,} 使前面的字符出现不少于n次
如,[0-9]{2,} 匹配两位及以上的数字
10、{n,m} 使前面的字符至少出现n次,最多出现m次
如,[a-z]{6,8} 匹配 6〜8 位的小写字母
**基础元字符是grep默认支持的,而扩展元字符就必须得使用egrep 或 grep -E **
扩展元字符
1、 + 匹配前面的字符一次或多次
如“go+gle”会匹配“gogle” “google”或“gooogle”。当然,如果“o”有更多个,则也能匹配
2、? 匹配前面的一个字符零次或一次
如 “colou?r” 可以匹配 “colour” 或 “color”
3、| 表示或的意思
如“was|his”既会匹配包含“was”的行,或匹配包含“his”的行
4、() 会将括号里的看成一个整体 ,相当于一个大字符
如“(dog)+”会匹配“dog” “dogdog” “dogdogdog”等,因为被()包含的字符会被当成一个整体