Linux通配符与正则表达式

一、 基本概念
1. 什么是通配符:具有特殊含义的符号。
2. 什么是正则表达式:一种用来进行字符串查找、匹配、分割、替换的语法规则。
二、基本符号
1. 通配符的基本符号有: *, ?, [], [-], [^].其中,*表示匹配零个或多个字符;?表示匹配任意一个字符; []中是一串字符,比如[abcdefg],表示匹配括号中的任意一个字符,也就是要么匹配a,要么匹配b,要么匹配c等等;[-]中是一个字符范围,比如0到9就写成[0-9],所有小写字母就写成 [a-z],这个通配符表达的是括号中字符范围内的任意一个字符,比如[0-9]匹配的是任意一个数字字符,[a-z]匹配的是任意一个小写字母。如果加上字符’^’,表达的意思是“取反“,比如说[^0-9],这个通配符表达的是匹配任意一个非数字的字符。
2. 正则表达式的基本符号(又称元字符):*, .(点号), ^, $, [], [^], \, \{n}, \{n,}, \{n,m}.
*: 元字的*与通配符的*意思不同,它表达的是匹配前一个字符重复0次或多次的字符串。比如正则表达式ba*, 它会匹配的字符串有b, ba, baa, baaa, 等等。。
.(点号): 表示匹配除了换行符之外的任意一个字符,与通配符的\?相似。
^: 代表字符串首位置。比如正则表达式”^abc”,表达的含义是匹配字符串首为abc的字符串。
$: 代表字符串尾位置。比如正则表达式”abc$”,表达的含义是匹配字符串尾为abc的字符串。
[]: 与通配符的[](中括号)有相同的含义。表达匹配有某一范围字符的字符串。
[^]: 字符’^’在中括号内部表示取反,若在中括号外部表示字符串首位置。
\: 转义字符,将有特殊功能的字符弱化为一般字符。比如.(点号字符表示匹配任意字符),如果我想匹配.字符,我的正则表达式应为”\.”,即通过转义字符将有特殊功能的.号字符去特殊化为普通.字符。
\{n\}: 因为{是特殊字符,所以需要通过转义字符将{去特殊化为普通字符才能使用。这个元字符的含义是匹配{前的字符重复n次的字符串。比如:a\{3\},表达的含义是匹配a字符重复三次的字符串。
\{n,\}: 表达的是匹配{前的字符重复多于n次的字符串,还是这个例子a\{3,\},中间多了一个,号,表示匹配字符a重复多于3次的字符串(包括3次)。
\{n, m\}: 表达的是匹配{前的字符重复n到m次的字符串。比如a\{3, 5\},表达的含义是匹配字符a重复了3到5次的字符串(包括3次和5次)。
三、通配符和正则表达式的区别
1. 用途不同:通配符用来匹配文件名,而正则表达式用来匹配文件中的内容。
2. 范围不同:通配符是完全匹配,而正则表达式是包含匹配。什么是完全匹配:就是通配符有多长,匹配的字符串又多长,比如通配符”???”表达的是匹配长度为3个字符的字符串,结果就只会匹配3个字符长度的字符串,通配符和结果匹配度完全一样。什么叫包含匹配:就是元符号知识匹配结果中的一部分,比如正则表达式”…”,表达的是匹配字符串中有3个字符的字符串,结果就会匹配所有字符个数多于3个字符的字符串,也就是说,结果字符串只包含了正则表达式。
3. 命令不同:一般用通配符的命令是find, ls, cp等(操作的是文件名),而用正则表达式的命令是:grep, awk, sed等(操作的是文件内容)。
总结:首先总结了通配符和正则表达式的基本概念,介绍了通配符和正则表达式的基本符号,最后比较了两者之间的区别。
若有不妥之处,敬请指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值