我是靠谱客的博主 善良萝莉,这篇文章主要介绍通配符和正则表达式的区别,现在分享给大家,希望可以做个参考。

一概念

1.通配符:英文wildcard,通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符。

2.正则表达式,又称规则表达式(英语Regular Expression在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

通配符与正则表达式很容易混淆,首先要明白二者是不同的,个人感觉通配符用于Linux的shell命令(如文件名相关操作)中,而正则表达式用于文本内容中的字符串搜索和替换等。通配符是Linux系统本身就支持的,而正则表达式用于vim编辑器或awk程序,这些文本处理工具正是由于支持正则表达式才变得强大。

二类型

1.通配符

     

  • *星号,匹配任何字符
  • ? 问号,匹配任意一个字符
  • []中括号,匹配括号中的一个字符

     星号(*)

可以使用星号代替0个或多个字符。如果正在查找以AEW开头的一个文件,但不记得文件名其余部分,可以输入AEW*,查找以AEW开头的所有文件类型的文件,如AEWT.txt、AEWU.EXE、AEWI.dll等。要缩小范围可以输入AEW*.txt,查找以AEW开头的所有文件类型并.txt为扩展名的文件如AEWIP.txt、AEWDF.txt。
问号(?)
可以使用问号代替一个字符。如果输入love?,查找以love开头的一个字符结尾文件类型的文件,如lovey、lovei等。要缩小范围可以输入love?.doc,查找以love开头的一个字符结尾文件类型并.doc为扩展名的文件如lovey.doc、loveh.doc。
通配符包括星号“*”和问号“?”
星号表示匹配的数量不受限制,而后者的匹配字符数则受到限制。这个技巧主要用于英文搜索中,如输入““computer*”,就可以找到“computer、computers、computerised、computerized”等单词,而输入“comp?ter”,则只能找到“computer、compater、competer”等单词。                                                                                                     2.正则表达式

元字符 作用
* 前一个字符匹配0次或任意多次
. 匹配除了换行符以外任意一个字符
^ 匹配行首。例如:^helloworld会匹配以helloworld开头的行
$ 匹配行尾。例如:helloworld$会匹配以helloworld结尾的行
[] 匹配中括号里的任意指定的一个字符,但只匹配一个字符
[^] 匹配除中括号以外的任意一个字符
转义符,取消特殊含义
{n} 表示其前面的字符恰好出现n次
{n,} 表示其前面的字符出现不小于n次
{n,m} 表示其前面的字符至少出现n次,最多出现m次

三.举例

1.正则表达式

^   匹配行首

wKioL1UTuvKRmR1vAABGAd2UAw8097.jpg

$   匹配行尾

.   匹配任意字符

wKiom1UTtUSQbnzXAAApkd3bCIY007.jpg

*   匹配*之前的字符0次或者多次

wKioL1UTtv_ANosBAABDzZ-M75Y883.jpg

ls | grep “^h.n”

匹配的是以h开头的第二个字符为任意字符,第三个字符为n的所有文件

ls | grep "^h.n*"

匹配的是以h开头的第二个字符为任意字符,第三个字符为n的0次和2次

因为,hjkkk这个文件的第三个字符为k不为n,*匹配的时候将n匹配0次的时候也就是第三个字符不为n也将之匹配并输出,至于hrnkkk和hungss第三个字符都出现一次,所有grep顺利将其匹配输出


2.通配符

?代表匹配任意单个字符

wKiom1UTuGzgjW_NAACPsdcBAHY030.jpg

* 代表匹配任意字符的组合也也可以匹配单个字符

wKiom1UTuQ_xT3GbAAE2zMTt4Vw647.jpg

特别注意的是*在正则表达式中个通配符中使用的不同




最后

以上就是善良萝莉最近收集整理的关于通配符和正则表达式的区别的全部内容,更多相关通配符和正则表达式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部