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

news2025/4/22 10:27:10

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

正则表达式

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

介绍两个交互式的网站来学习正则表达式
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.coloradmin.cn/o/2340037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于超启发鲸鱼优化算法的混合神经网络多输入单输出回归预测模型 HHWOA-CNN-LSTM-Attention

基于超启发鲸鱼优化算法的混合神经网络多输入单输出回归预测模型 HHWOA-CNN-LSTM-Attention 随着人工智能技术的飞速发展&#xff0c;回归预测任务在很多领域得到了广泛的应用。尤其在金融、气象、医疗等领域&#xff0c;精确的回归预测模型能够为决策者提供宝贵的参考信息。为…

Android RK356X TVSettings USB调试开关

Android RK356X TVSettings USB调试开关 平台概述操作-打开USB调试实现源码补充说明 平台 RK3568 Android 11 概述 RK3568 是瑞芯微&#xff08;Rockchip&#xff09;推出的一款高性能处理器&#xff0c;支持 USB OTG&#xff08;On-The-Go&#xff09;和 USB Host 功能。US…

消息队列知识点详解

消息队列场景 什么是消息队列 可以把消息队列理解一个使用队列来通信的组件&#xff0c;它的本质是交换机队列的模式&#xff0c;实现发送消息&#xff0c;存储消息&#xff0c;消费消息的过程。 我们通常说的消息队列&#xff0c;MQ其实就是消息中间件&#xff0c;业界中比较…

序列号绑定的SD卡坏了怎么办?

在给SD卡烧录程序的时候&#xff0c;大家发现有的卡是无法烧录的&#xff0c;如&#xff1a;复印机的SD卡不能被复制通常涉及以下几个技术原因&#xff0c;可能与序列号绑定、加密保护或硬件限制有关&#xff1a; 一、我们以复印机的系统卡为例来简单讲述一下 序列号或硬件绑定…

使用SystemWeaver生成SOME/IP ETS ARXML的完整实战指南

使用SystemWeaver生成SOME/IP ETS ARXML的完整实战指南 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 一、SystemWeaver与SOME/IP基础认知 1.1 SystemWe…

Flutter 状态管理 Riverpod

Android Studio版本 Flutter SDK 版本 将依赖项添加到您的应用 flutter pub add flutter_riverpod flutter pub add riverpod_annotation flutter pub add dev:riverpod_generator flutter pub add dev:build_runner flutter pub add dev:custom_lint flutter pub add dev:riv…

【HarmonyOS 5】VisionKit人脸活体检测详解

【HarmonyOS 5】VisionKit人脸活体检测详解 一、VisionKit人脸活体检测是什么&#xff1f; VisionKit是HamronyOS提供的场景化视觉服务工具包。 华为将常见的解决方案&#xff0c;通常需要三方应用使用SDK进行集成。华为以Kit的形式集成在HarmoyOS系统中&#xff0c;方便三方…

Pycharm(九)函数的闭包、装饰器

目录 一、函数参数 二、闭包 三、装饰器 一、函数参数 def func01():print("func01 shows as follows") func01() # 函数名存放的是函数所在空间的地址 print(func01)#<function func01 at 0x0000023BA9FC04A0> func02func01 print(func02)#<function f…

【深度学习】详解矩阵乘法、点积,内积,外积、哈达玛积极其应用|tensor系列02

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a; Yaoyao2024往期回顾&#xff1a;【深度学习】你真的理解张量了吗&#xff1f;|标量、向量、矩阵、张量的秩|01每日一言&#x1f33c;: “脑袋想不明白的&#xff0c;就用脚想”…

MH2103系列coremark1.0跑分数据和优化,及基于arm2d的优化应用

CoreMark 1.0 介绍 CoreMark 是由 EEMBC&#xff08;Embedded Microprocessor Benchmark Consortium&#xff09;组织于 2009 年推出的一款用于衡量嵌入式系统 CPU 或 MCU 性能的标准基准测试工具。它旨在替代陈旧的 Dhrystone 标准&#xff08;Dhrystone 容易受到各种libc不同…

Flowith AI,解锁下一代「知识交易市场」

前言 最近几周自媒体号都在疯狂推Manus&#xff0c;看了几篇测评后&#xff0c;突然在某个时间节点&#xff0c;在特工的文章下&#xff0c;发现了很小众的Flowith。 被这段评论给心动到&#xff0c;于是先去注册了下账号。一翻探索过后&#xff0c;发现比我想象中要有趣的多&…

SpringBoot企业级开发之【文章分类-新增文章分类】

看一下新增文章的需求&#xff1a; 接口文档&#xff1a; 开发思路&#xff1a; 先在controller下去创建add方法&#xff0c;方法内导入Service类获取add的结果&#xff1b;再在Service接口下去创建add的方法&#xff1b;然后在Service实现类下去实现方法的作用&#xff0c;且导…

【AI News | 20250421】每日AI进展

AI Repos 1、langgraph-mcp-agents 基于LangGraph的AI智能体系统&#xff0c;集成了MCP&#xff0c;使AI助手能访问各种数据源和API。提供了Streamlit网页界面&#xff0c;方便与LangGraph和MCP工具交互。可以通过界面动态添加、删除以及配置MCP工具&#xff0c;无需重启应用&…

牛客 | OJ在线编程常见输入输出练习

1.只有输出 言归正传&#xff0c;本张试卷总共包括18个题目&#xff0c;包括了笔试情况下的各种输入输出。 第一题不需要输入&#xff0c;仅需输出字符串 Hello Nowcoder! 即可通过。 #include <iostream> using namespace std; int main(){string s "Hello Nowco…

python生成动态库在c++中调用

一.Windows下生成动态库.pyd 在setup.py的同目录下使用python setup.py build_ext --inplace 二.在vscode的c中使用.pyd文件&#xff08;动态库&#xff09; 1&#xff09;配置python的环境 python -c "import sys; print(sys.executable)" #确定python安装位置 2…

OpenCV基础函数学习4

【大纲笔记见附件pdf】 目录 一、基于OpenCV的形态学操作 二、基于OpenCV的直方图处理 三、基于OpenCV霍夫变换 四、基于OpenCV模板匹配 一、基于OpenCV的形态学操作 二、基于OpenCV的直方图处理 三、基于OpenCV霍夫变换 四、基于OpenCV模板匹配

Nginx反向代理用自定义Header参数

【啰嗦两句】 也不知道为啥&#xff0c;我仅仅想在Nginx的反向代理中使用自己定义的“x-api-key”做Header参数&#xff0c;却发现会被忽略&#xff0c;网上搜的资料都是说用“proxy_set_header”&#xff0c;却只愿意介绍最基本的几个参数&#xff0c;你懂的&#xff0c;那些资…

详解机器学习各算法的优缺点!!

在机器学习这个 “工具库” 里&#xff0c;算法就像各种各样的工具&#xff0c;每一种都有自己的 “脾气” 和 “特长”。有些算法擅长找规律&#xff0c;有些算法能快速分类&#xff0c;还有些在处理复杂数据时特别厉害。 而且&#xff0c;就像锤子适合敲钉子、螺丝刀适合拧螺…

C++23 让 Lambda 表达式中的 () 更可选:P1102R2 提案深度解析

文章目录 一、背景与动机&#xff1a;Lambda 表达式中的痛点1.1 问题的根源 二、P1102R2 提案&#xff1a;让 () 可选2.1 提案的核心内容2.2 语法调整的细节2.3 提案的合理性 三、编译器支持&#xff1a;主流编译器的跟进四、对 C 编程的影响&#xff1a;简化语法与提升一致性4…

在Qt中验证LDAP账户(Windows平台)

一、前言 原本以为在Qt&#xff08;Windows平台&#xff09;中验证 LDAP 账户很简单&#xff1a;集成Open LDAP的开发库即可。结果临了才发现&#xff0c;Open LDAP压根儿不支持Windows平台。沿着重用的原则&#xff0c;考虑迁移Open LDAP的源代码&#xff0c;却发现工作量不小…