正则和通配
在什么地方使用通配符?
答案是只要是shell命令行或者shell脚本中,你都可以使用通配符;主要用于搜索文件
在什么地方使用正则表达式?
当你使用能够支持正则表达式的工具软件进行字符串处理时你就可以使用正则表达式。你还可以在支持正则表达式的语言中使用正则表达式,比如perl, java… C++中也有专门用于支持正则表达式的库。正则表达式总是和“使用什么工具软件或者语言”相关。相对来说,不同的工具和语言对正则表达式的支持程度不同,*nix里面将这些工具软件的对正则表达式的支持分类,因此也就有了“基础正则表达式”和“扩展正则表达式”。
主要用于处理文本
1、正则表达式
又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
2、通配符
通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正的字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。
3、两者区别
通配符:方便文件查找,适用于大多数的linux命令;
正则表达式:方便文件的过滤,主要使用与linux三剑客,pytho,php等语言。
通配符
- 通配符用来匹配符合条件的文件
- 通配符是完全匹配。
- ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了
? 匹配一个任意字符
* 匹配0个或多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。如:[abc]代表匹配abc字符中的任一个
[-] 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符
'' 单引号,在单引号中所有的特殊符号,都没有特殊含义,如$和`都没有特殊含义
"" 双引号,在双引号中的特殊符号都没有特殊含义,但是$(调用变量的值)、`(引用命令)和\(转义符)是例外
正则
- 正则表达式用来在文件中匹配符号条件的字符串
- 正则是包含匹配
- grep、awk、sed等命令可以支持正则表达式
* 匹配0个或多个任意字符
. 匹配除了换行符外的任意一个字符
^ 匹配行首。例如:^hello会匹配以hello开头的行
$ 匹配行尾
[] [] 匹配中括号中任意一个字符。[a-z][0-9]匹配小写和一个数字构成的两个字符
如 [Yy][Ee][Ss] | [Yy]
元字符
- 若需要具体的表示,如需要表示. 需要进行转义
重复限定符
分组
条件或