通配符和正则表达式简单讲解

 更新时间:2026年09月18日 10:15:25   作者:2301_80164864  
正则表达式和通配符是两种不同的模式匹配语法,虽然看起来相似,但它们的用途、规则和场景完全不同,这篇文章主要介绍了通配符和正则表达式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、通配符

通配符也叫文件名替换,它主要是作用于匹配文件名,常用命令是ls、find、cp、mv。

主要用于匹配文件名

符号作用
*匹配任意(0个或多个)字符或字符串,包括空字符串
匹配任意1个(单个)字符,有且只有一个字符
[abcd]匹配abcd中任何一个字符,abcd也可是其他任意不连续字符
[0-9]匹配数字0-9之间的任意一个数字
[a-z]匹配中a到z之间的任意一个字符, a到z表示范围,字符前后要连续,-表示范围的意思
[!abcd]同[^abcd],表示不匹配括号里面的任何一个字符,也可为[!a-d]

ls -d 通配符 -d只列出目录本身,不显示里面的内容

ls -d *.txt             列出当前目录下所有以.txt结尾的文件
ls -d /data/*.txt       列出指定目录/data下的所有以.txt结尾的文件
ls -d a*                列出当前目录下以a开头的文件
ls -d a?b               列出当前目录下以a开头中间有任意一个字符以b结尾的文件
ls -d [aln]*            列出当前目录下以a/l/n开头的文件
常见的字符集作用
[:alpha:]表示所有的字母(不区分大小写)= [a-Z]
[:alnum:]表示任意单个字母或数字(不区分大小写)= a-Z
[:lower:]表示任意单个小写字母 = [a-z]
[:upper:]表示任意单个大写字母 = [A-Z]
[:digit:]表示任意单个数字 = [0-9]

使用字符集时用中括号[]包起来

ls -d *[[:digit:]]      表示当前目录下以数字结尾的文件

二、正则表达式

又称“规则表达式”。regex

正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。

用来匹配文件名,在文本编辑器中,用来匹配特定文本内容,替换文本内容。

字符匹配

  • . 匹配任意单个字符

  • [] 匹配指定范围内的任意单个字符

  • [^] 匹配指定范围外的任意单个字符

特殊表示

常见的字符集作用
[:alpha:]表示所有的字母(不区分大小写)= [a-Z]
[:alnum:]表示任意单个字母或数字(不区分大小写)= a-Z
[:lower:]表示任意单个小写字母 = [a-z]
[:upper:]表示任意单个大写字母 = [A-Z]
[:digit:]表示任意单个数字 = [0-9]
[:space:]任何会产生空白的字符,包括空白键, [Tab], CR 等等

匹配次数

\用于转义,这里的 { 和 } 和 ?和 + 前面都有一个转义符\

符号作用
*匹配其前面的字符任意次(0次、1次或多次)
.*匹配任意长度的任意字符
\?匹配起前面字符0次或1次
+匹配其前面字符1次或多次
{m}匹配其前面的字符m次
{m,n}匹配其前面字符最少m次,最多n次
{m,}匹配其前面字符最少m次
{,n}匹配其前面字符最多n次

匹配位置

^:行首锚定

$:行尾锚定

^$:匹配空白行

\<或\b:词首锚定

\>或\b:词尾锚定

\<PATTERN\>:匹配完整的单词

分组

()

中间使用|表示或 (a|b)a或b

三、扩展正则表达式

基本正则表达式需要转义符\,扩展正则表达式不需要转义符\

基本正则表达式意义扩展正则表达式意义
.匹配任意单个字符.匹配任意单个字符
[]匹配指定范围内的任意单个字符[]匹配指定范围内的任意单个字符
[^]匹配指定范围之外的任意单个字符[^]匹配指定范围之外的任意单个字符
*匹配其前边的字符任意次(0次,或者多次,不能单独使用)*匹配其前边的字符任意次(0次或多次,不能单独使用)
.*匹配任意长度的任意字符.*匹配任意长度的任意字符
+匹配其前边的字符一次或者多次(匹配至少1次)
\?匹配其前边的字符0次或者1次?匹配前边的字符0次或者1次
\{m,n\}匹配前边的字符至少m次,最多n次{m,n}匹配前边的字符至少m次,最多n次
^匹配行首,此字符后边的任意内容必须出现在行首^匹配行首,此字符后边的任意内容必须出现在行首
$匹配行尾,此字符前边的任意内容必须出现在行尾$匹配行尾,此字符前边的任意内容必须出现在行尾
^$匹配空白行^$匹配空白行
\< 或 \b匹配词首,其后面的任意字符必须作为单词首部出现\<匹配行首,其后面的任意字符必须作为单词首部出现
\>或\b匹配词尾,其前面的任意祖父必须作为单词的尾部出现\>匹配词尾,其前面的任意祖父必须作为单词的尾部出现
\(\)分组匹配,会将() 内匹配的内容保存起来,后边可以使用\1 或者 \2 的位置信息进行引用() |分组匹配,会将() 内匹配的内容保存起来,后边可以使用\1 或者 \2 的位置信息进行引用
\s : 匹配空白符,包括空格、制表符、换行符等

总结 

到此这篇关于通配符和正则表达式的文章就介绍到这了,更多相关通配符和正则表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论