通配符与正则表达式
正则表达式一般用于处理文本内容,常用命令有grep,sed,awk,vim等
通配符一般用于匹配文件名,常用命令有find,ls,cp等
Linux通配符包括以下几种:
- *:匹配任意数量的字符(包括0个字符)
- ?:匹配任意单个字符
- []:匹配方括号中的任意一个字符
- [!]:匹配不在方括号中的任意一个字符
正则表达式是一种更为强大的模式匹配工具,它可以匹配更复杂的模式。
构成
1.元字符(基本元字符、扩展元字符)
2.除元字符之外的任意字符都是表示他字面意思的正则表达式下面详细介绍
匹配特征:贪婪匹配,尽可能匹配多的基本元字符
基本元字符
字符匹配:
. 任意单个字符
[ ] 匹配[ ]内的任意单个字符
[^] 首位为^表示取反,不匹配[ ]中的字符
[a-z] 匹配a-z中任意一个小写字母
[0-9] 数字
[A-Z] 大写字母
[a-zA-Z] 所有字母
[^a-zA-Z0-9] 所有符号
次数匹配:
* 匹配*前面的字符重复0次到多次
\{n\} 匹配前面的字符刚好重复n次
\{n,m\} 前面的字符重复n次到m次
\{,n\} 前面的字符最多重复n次 小于n次
\{n,\} 前面的字符最少重复n次 大于n次
位置匹配 :
^ 行首
$ 行尾
\< 词首
\> 词尾
\<hello\> 匹配单词hello
扩展元字符
+ 前面的字符至少重复1次 / 1次或者 1次以上
? 前面的字符重复0次或1次
| 或 x|y 匹配x或y z|food 匹配z或food [zf]ood 匹配zood 或food(m|f)ood
{} 次数匹配
() 分组 \数字 引用分组的内容 1-9
前向: 在正则中引用
后向: 在其他地方引用, \0表示引用模式中所有的内容 \0 ⇔ &
& 前面匹配的全部内容\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\s 匹配一个不可见字符 相当于[\f\n\r\t\v]
\S 匹配一个任何可见字符 相当于[^\f\n\r\t\v]
正则表达式POSIX字符簇
[[:alnum:]] 字母与数字字符
[[:alpha:]] 字母字符
[[:blank:]] 空格与制表符
[[:digit:]] 数字字母
[[:lower:]] 小写字母
[[:upper:]] 大写字母
[[:punct:]] 标点符号
[[:space:]] 换行符,回车符在内所有空白