通配符(wildcard)和正则表达式(regular expression)
概念
1.通配符:英文wildcard
,通配符是一种特殊语句,主要有星号(”)
和问号(?)
,用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符。
2.正则表达式,又称规则表达式。(英语 Regular Expression
,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
一个正则表达式是描述一组字符串的一个模式。正则表达式的构成是模仿了数学表达式,通过使用操作符将较小的表达式组合成一个新的表达式。
不同点
这个博客讲的不错通配符和正则表达式
通配符和正则表达式在命令行以及文本处理方面非常有用。正则表达式和通配符有一些相似之处,但它们并不兼容。
-
当在命令行工作时,使用通配符扩展文件名;
通配符用来匹配符合条件的文件名,通配符是完全匹配
ls
find
cp
这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配 -
当使用 grep, awk, sed 等处理文本时,使用正在表达式匹配文本。
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配
grep
awk
sed
等命令可以支持正则表达式
这里做一下总结: 通配符用于路径名扩展,而正则表达式用于文本匹配。特别注意的是*在正则表达式中个通配符中使用的不同
通配符
符号 | 内容 |
---|---|
* |
将匹配0个(即空白)或多个字符c(c为任一字符) |
. |
将匹配任何一个字符而且只能是一个字符 |
[xyz] |
将匹配方括号内任意一个字符 |
[^xyz] |
将匹配不包括方括号中的字符的所有字符 |
^ |
锁定行的开头 |
` | 符号 |
------------ | ------------ |
* |
将匹配0个(即空白)或多个字符c(c为任一字符) |
. |
将匹配任何一个字符而且只能是一个字符 |
[xyz] |
将匹配方括号内任意一个字符 |
[^xyz] |
将匹配不包括方括号中的字符的所有字符 |
^ |
锁定行的开头 |
锁定行的结尾 |
正则表达式语法
元字符 | 功能说明 |
---|---|
. | 匹配除换行符以外的任意单个字符 |
* | 匹配位于*之前的字符或子模式的0次或多次出现 |
+ | 匹配位于+之前的字符或子模式的1次或多次出现 |
- | 在[]之内用来表示范围 |
| | 匹配位于|之前或之后的字符 |
^ | 匹配行首,匹配以^后面的字符开头的字符串 |
? | 匹配位于?之前的0个或1个字符。当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。例如,在字符串“oooo”中,“o+?”只匹配单个“o”,而“o+”匹配所有“o” |
\ | 表示位于\之后的为转义字符 |
\num | 此处的num是一个正整数。例如,“(.)\1”匹配两个连续的相同字符 |
\f | 换页符匹配 |
\n | 换行符匹配 |
\r | 匹配一个回车符 |
\b | 匹配单词头或单词尾 |
\B | 与\b含义相反\b含义相反 |
\d | 匹配任何数字,相当于[0-9] |
\D | 与\d含义相反,等效于[^0-9] |
\s | 匹配任何空白字符,包括空格、制表符、换页符,与 [ \f\n\r\t\v] 等效 |
\S | 与\s含义相反 |
\w | 匹配任何字母、数字以及下划线,相当于[a-zA-Z0-9_] |
\W | 与\w含义相反\w含义相反,与“[^A-Za-z0-9_]”等效 |
() | 将位于()内的内容作为一个整体来对待 |
{} | 按{}中的次数进行匹配 |
[] | 匹配位于[]中的任意一个字符 |
[^xyz] | 反向字符集,匹配除x、y、z之外的任何字符 |
[a-z] | 字符范围,匹配指定范围内的任何字符 |
[^a-z] | 反向范围字符,匹配除小写英文字母之外的任何字符 |
具体的正则表达式内容见正则表达式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)