当前位置: 首页 > news >正文

linux学习 5 正则表达式及通配符

重心应该放在通配符的使用上

正则表达式

正则表达式是用于 文本匹配和替换 的强大工具

介绍两个交互式的网站来学习正则表达式
regexlearn 支持中文

regexone
还有一个在线测试的网址
regex101

基本规则

符号作用示例
.匹配任何字符除了换行a.b -> axb/a,b
[abc]匹配字符集里面的任何一个内容b[aei]d -> bad/bed/bid
[^abc]否定字符集,匹配除了字符集之外的字符b[abc]d -> bad b[^abc]d ↛ bad
[a-z]匹配a-z的所有字符也能任意指定区间[a-z] -> x/a/d/r/t
[0-9]同样支持数字匹配[0-9] -> 1/4/7
*匹配前一个字符0次或多次be* -> b/be/beeee
+匹配前一个字符1次或多次be+ -> be/beeee
?匹配前一个字符0次或1次colou?r - > colour/color
{n}表示前一个字符确切的次数be{2}t -> beet
{n,}表示前一个字符至少出现nbe{2,} -> bee/beee/beeeeee
{m,n}表示前一个字符出现的次数在m-n之间be{1,3} -> be/bee/beee
^表示匹配行首-
$匹配行尾-
\w用于匹配字母、数字和下划线-
\W用于匹配字母数字和下划线之外的内容-
\d用于匹配数字相当于[0-9]-
\D用于匹配除了数字以外的内容相当于[^0-9]-
\s匹配空白字符-
\S匹配非空白字符-
.*贪婪匹配尽可能多的匹配-
.*?q懒惰匹配遇到你所给的内容便停止这里是q-
(?=pm)正向先行断言,只匹配后面有 pm 的内容-
(?!pm)负向先行断言,处了后面有pm的内容-
(?<=$)正向后行断言,只匹配以$开头的内容-
(?<!q)负向后行断言,只匹配不以q-

使用()可以完成分组匹配 ()中为想捕获的内容(?:)可以仅分组不捕获

在这里插入图片描述
|可以支持或的逻辑
在这里插入图片描述

这样可以捕捉以.c.txt结尾的文件

建议直接跟着交互式教程玩一遍,然后自己在在线测试网址看结果,无需看我的举例

举例

  • ^匹配行首
    在这里插入图片描述

  • $匹配行尾
    在这里插入图片描述
    \为转义字符否则.的含义为匹配任何一个字符
    在这里插入图片描述

  • \w
    在这里插入图片描述

  • \W
    在这里插入图片描述
    在这里插入图片描述

  • \d
    在这里插入图片描述

  • \D
    在这里插入图片描述

  • \s
    在这里插入图片描述
    -\S
    在这里插入图片描述

  • (?=)
    匹配以.txt结尾的文件名
    在这里插入图片描述

  • (?!)
    匹配除了.txt的文件名
    在这里插入图片描述
    这样其实不能达到效果
    在这里插入图片描述

  • (?<=)
    匹配所有以点开头的单词,但是不包括.
    在这里插入图片描述-(?<!)
    在这里插入图片描述
    \b表示单词的边界

  • .*
    尽可能长的进行匹配
    在这里插入图片描述

  • .*?
    遇到即停止
    在这里插入图片描述

linux通配符

这个部分与正则的语法有一定的差异
也没有那么复杂

符号作用
*匹配任意数量的任意字符
?匹配单个任意字符
[a-z]括号内任意一个字符,这与正则规则相同就不多说了
[^0-9]也支持取反不过使用!也可以

我们使用rm删除命令来举例

删除所有以d开头的目录
在这里插入图片描述

删除所有以数字结尾的目录和文件
注意3是个普通文件他的颜色与目录不同,他也被删除了
在这里插入图片描述

rm -rf * 

删库跑路2333 注意这会删除你当前工作目录的所有内容,而且linux没有类似于回收站的机制基本无法找回,请慎重
在这里插入图片描述
这些基本上够日常使用

不过其实还支持更强大的通配符

更强大的通配符

查看是否开启

shopt extglob

在这里插入图片描述
显示on即正常开启了,如果没有采用下面命令开启

shopt -s extglob

pattern都是通配符

注意如果你的rm后面的删除的文件名没有/那么会针对所有目录和文件操作 如果你不想误操作删除了你的目录的话你就不要加上 -r

  1. ?(pattern)匹配0次或1次
    在这里插入图片描述
    同时删除dir和dirx

  2. *(pattern)匹配0次或多次
    在这里插入图片描述
    删除所有以数字结尾的内容,如果你不采用这个
    在这里插入图片描述
    你就只能删除单个数字结尾的内容

  3. +(pattern)匹配1次或多次
    删除所有以dir开头以数字结尾的目录和文件
    在这里插入图片描述
    注意如果这里是你用*([0-9])你会导致dir23xdirx也被删除,因为*([0-9])可以是0次,随后前面的*可以把最后的x也匹配上
    在这里插入图片描述

  4. !(pattern)不匹配pattern
    删除所有不以数字为结尾的目录
    在这里插入图片描述
    注意这个/非常关键如果你没有/那么你的对象不再只是目录文件也算了
    在这里插入图片描述
    你会删除所有不以数字结尾的文件和目录

  5. @(pat1|pat2)同时匹配pat1pat2的内容
    删除所有纯数字和纯字母的文件和目录
    在这里插入图片描述
    你可以主要到我使用了一些嵌套扩展通配符这也是可以的

http://www.xdnf.cn/news/30691.html

相关文章:

  • 聊聊Spring AI Alibaba的ElasticsearchDocumentReader
  • JavaScript中的Event事件对象详解
  • 自由学习记录(56)
  • 背包 DP 详解
  • 【mongodb】数据库操作
  • TIM_ITConfig() 和 TIM_Cmd()
  • 当HTTP遇到SQL注入:Java开发者的攻防实战手册
  • 实用电脑工具,轻松实现定时操作
  • 《目标检测双雄:YOLO与Faster R-CNN,谁主沉浮?》
  • dotnet core webapi 实现 异常处理中间件
  • [密码学基础]GMT 0002-2012 SM4分组密码算法 技术规范深度解析
  • LNA设计
  • spring Ai---向量知识库(一)
  • 43.[前端开发-JavaScript高级]Day08-ES6-模板字符串-展开运算符-ES7~ES11
  • PyTorch深度学习框架60天进阶学习计划 - 第46天:自动化模型设计(一)
  • 在RK3588上使用哪个流媒体服务器合适
  • 在swiftui项目中使用WKWebView加载自定义脚本文件
  • 【HDFS入门】HDFS性能调优实战:关键参数对吞吐量的影响深度解析
  • c++ 类的语法1
  • UI文件上传
  • 深入解析进程与线程:区别、联系及Java实现
  • 设计模式-桥接模式
  • 14.解码器的Mask
  • End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱
  • 从GET到POST:HTTP请求的攻防实战与CTF挑战解析
  • EF Core中动态加载关联的导航属性
  • 直线轴承的正确安装方式是什么?
  • LeetCode 热题 100_乘积最大子数组(88_152_中等_C++)(动态规划)
  • 虚拟现实(VR)技术在教育领域的创新应用
  • QML中的3D功能--入门开发