正则表达式和通配符

文章目录

  • 正则表达式和通配符的区别
      • 正则表达式(Regex)
      • 通配符(Wildcards)
      • 总结
  • 正则表达式的概念
    • 正则表达式的由来
    • 为什么要使用正则表达式
  • 正则表达式的语法组成
    • 修饰符
    • 元字符
      • \f
      • \b
      • \B
  • 在Linux中的基础正则和扩展正则
    • 基础正则(BRE)
      • ^
      • $
      • .
      • *
      • .*
      • []
      • [^]
    • 扩展正则(ERE)
      • +
      • |
      • ()
      • {}
      • ?
  • 通配符
    • *
    • {}
    • []
  • 正则表达式使用注意事项
  • 其他的一些正则表达式

正则表达式和通配符的区别

正则表达式(Regular Expressions,简称 regex)和通配符(Wildcards)都是用于文本匹配的工具,但它们在功能和使用上有一些重要的区别:

  1. 功能范围

    • 正则表达式:提供了非常强大的模式匹配能力,可以定义复杂的搜索模式,包括字符类、量词、分组、回溯引用、断言等。正则表达式可以匹配或替换文本中的特定模式,如电话号码、电子邮件地址、URL等。
    • 通配符:功能相对简单,主要用于文件名的匹配。常见的通配符包括 *(匹配任意数量的字符,包括零个字符)、?(匹配任意单个字符)和 [...](匹配括号内的任意单个字符)。
  2. 使用场景

    • 正则表达式:在编程语言中广泛使用,如 Python、Java、JavaScript 等,用于文本处理、数据验证、日志分析等场景。
    • 通配符:通常用于文件系统(如 Unix/Linux 的 shell 命令)中匹配文件名,如 ls *.txt 会列出当前目录下所有扩展名为 .txt 的文件。
  3. 语法复杂性

    • 正则表达式:语法相对复杂,需要一定的学习成本。不同的编程语言和工具可能支持不同的正则表达式语法。
    • 通配符:语法简单,易于理解和使用。
  4. 灵活性

    • 正则表达式:非常灵活,可以定义几乎任何复杂的匹配模式。
    • 通配符:灵活性有限,主要用于简单的字符匹配。
  5. 性能

    • 正则表达式:由于其复杂性,处理大规模数据时可能会有性能开销。
    • 通配符:通常性能较好,因为其匹配规则简单,易于快速处理。
  6. 跨平台性

    • 正则表达式:在不同的编程语言和工具中都有支持,具有较好的跨平台性。
    • 通配符:在不同的操作系统和文件系统中,通配符的实现可能有所不同。

总结来说,正则表达式提供了更强大的文本匹配能力,适用于复杂的文本处理任务,而通配符则适用于简单的文件名匹配和一些基本的文本搜索。


当然可以。让我们更详细地探讨正则表达式和通配符的区别:

正则表达式(Regex)

定义
正则表达式是一种文本模式,包括普通字符(例如,字母a到z)和特殊字符(称为"元字符")。元字符用于定义搜索模式的规则,例如,哪些字符可以出现,它们可以出现的次数等。

特点

  • 精确匹配:可以精确定义要匹配的字符串的模式。
  • 复杂模式:能够创建复杂的匹配模式,如IP地址、电子邮件地址、日期等。
  • 元字符:使用如 .(匹配任意单个字符,除了换行符)、^(匹配输入字符串的开始位置)、$(匹配输入字符串的结束位置)、*(匹配前面的子表达式零次或多次)、+(匹配前面的子表达式一次或多次)、?(匹配前面的子表达式零次或一次)、[](匹配括号内的任意单个字符)、|(匹配两项之间的任意一项)等元字符。
  • 分组和捕获:使用圆括号()来创建子表达式,可以进行分组和捕获。
  • 量词:可以指定量词来控制前面的元素出现的次数。
  • 回溯引用:可以使用\n来引用之前捕获的分组内容。
  • 性能:对于非常复杂的模式,可能会有性能上的考虑。

使用场景

  • 文本编辑器中的查找和替换功能。
  • 编程语言中的数据验证。
  • 日志文件分析。
  • 网络爬虫中用于提取特定数据。

通配符(Wildcards)

定义
通配符是一种简化的模式匹配工具,通常用于文件系统命令中,以匹配文件名。

特点

  • 简单性:语法简单,易于理解和使用。
  • 基本模式:只能定义基本的匹配模式,如单个字符匹配和任意字符序列匹配。
  • 常用通配符
    • *:匹配任意数量的字符(包括零个字符)。
    • ?:匹配任意单个字符。
    • [abc]:匹配方括号内的任意单个字符(a、b或c)。
    • [a-z]:匹配任意小写字母。
  • 限制性:功能有限,不能创建复杂的匹配模式。
  • 性能:由于简单,通常性能较好。

使用场景

  • 文件系统命令,如ls *.txt列出所有.txt文件。
  • 简单的文本搜索,如在文本编辑器中快速查找下一个或上一个匹配的单词。

总结

正则表达式提供了一种非常强大和灵活的方式来定义复杂的搜索模式,适用于需要精确控制文本匹配的场合。而通配符则提供了一种快速且简单的方式,用于基本的模式匹配,特别是在文件名匹配方面。正则表达式在功能上更为全面,但也需要更多的学习成本。通配符则因其简单性而在快速文件搜索中非常实用。


正则表达式的概念

正则表达式的由来

在这里插入图片描述

为什么要使用正则表达式

在这里插入图片描述

正则表达式的语法组成

修饰符

在这里插入图片描述

元字符

在这里插入图片描述

\f

换页符
如:

echo -e "aaa\f eee"

在这里插入图片描述

\b

表示边界

useradd abcnginx
useradd nginxcdf
grep -E 'nginx' /etc/passwd
grep -E '\bnginx' /etc/passwd
grep -E 'nginx\b' /etc/passwd
grep -E '\bnginx\b' /etc/passwd

\B

非单词边界
在这里插入图片描述

只有nginxcdf时,grep -E ‘\bnginx’ /etc/passwd结果是nignxcdf,而grep -E ‘\Bnginx’ /etc/passwd是空的

在Linux中的基础正则和扩展正则

基础正则(BRE)

Basic Regular Expression

^

以什么什么开头

$

以什么什么结尾

.

表示任意字符

*

表示前面的字符出现0次或多次

.*

匹配任意字符?

[]

表一个范围
在这里插入图片描述

[^]

表示取反

扩展正则(ERE)

Extended Regular Expression

+

表前面的字符出现一次或者多次
如:
空格和冒号出现一次或多次

[ :]+

|

表示或者

()

表示将括起来的部分识别成一个整体

{}

花括号中写非负整数,表示括号前面的内容出现指定的次数

如:
0到9的数字最少出现1次,最多出现3次

[0-9]{1,3}

?

表示前面的内容出现0次或者多次

通配符

*

表所有的内容
如:

rm -f *.txt

{}

表示序列

如:

echo {1..10} # 输出1 2 3 4 5 6 7 8 9 10
echo {1...10...2} # 输出1 3 5 7 9(每个2位)

表示匹配任意一个字符
在这里插入图片描述

如:

ls -l ???test.txt

[]

表示一个范围
在这里插入图片描述

正则表达式使用注意事项

在这里插入图片描述

其他的一些正则表达式

链接(用户名:driverzeng 密码:123@qqdianCOM)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/901007.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【南方科技大学】CS315 Computer Security 【Lab6 IoT Security and Wireless Exploitation】

目录 Introduction (Part 1: OS Security for IoT )Software RequirementsStarting the Lab 6 Virtual MachineSetting up the Zephyr Development EnvironmentDownload the Zephyr Source CodeInstalling Requirements and DependenciesSetting the Project’s Environment Va…

《a16z : 2024 年加密货币现状报告》解析

加密社 原文链接:State of Crypto 2024 - a16z crypto译者:AI翻译官,校对:翻译小组 当我们两年前第一次发布年度加密状态报告的时候,情况跟现在很不一样。那时候,加密货币还没成为政策制定者关心的大事。 比…

Ubuntu 安装 npm

1. 升级apt sudo apt-get update 2. 安装nodejs sudo apt install nodejs 3. 安装npm sudo apt-get install npm 4. 查看版本 node -v npm -v 完成安装!

记一次AWS服务器扩容

1、首先通过下列命令列出设备详情,可以看到红色框起来的部分有160G,需要把新增的20G扩容到根目录(139.9)上 lsblk查看文件系统 df -h2.执行sudo growpart /dev/xvda 1即可把20G的空间扩容到根目录上 扩容成功 但是可以看到并未生效 3.列出文件系统格…

ue5实现数字滚动增长

方法1 https://www.bilibili.com/video/BV1h14y197D1/?spm_id_from333.999.0.0 b站教程 重写loop节点 方法二 写在eventtick里

NVR小程序接入平台/设备EasyNVR多品牌NVR管理工具/设备的多维拓展与灵活应用

在数字化安防时代,NVR批量管理软件/平台EasyNVR作为一种先进的视频监控系统设备,正逐步成为各个领域监控解决方案的首选。NVR批量管理软件/平台EasyNVR作为一款基于端-边-云一体化架构的国标视频融合云平台,凭借其部署简单轻量、功能多样、兼…

什么是DICOM文件?——认识DICOM:医学影像与信息管理的标准化利器

目录 引言 什么是DICOM? DICOM的组成 DICOM的功能 DICOM的应用 DICOM的种类 DICOM的生成过程 DICOM的发展 总结 引言 在现代医学中,影像处理和管理是不可或缺的一环。从MRI、CT、X射线到超声波,医学影像为诊断和治疗提供了丰富的信息…

iOS 本地存储地址(位置)

前言: UserDefaults 存在沙盒的 Library --> Preferences--> .plist文件 CoreData 存在沙盒的 Library --> Application Support--> xx.sqlite 一个小型数据库里 (注:Application Support 这个文件夹已开始是没有的,只有当你写了存储代码,运行之后,目录里才会出…

django个人博客管理系统-计算机毕业设计源码27633

目 录 1 绪论 1.1 研究背景和意义 1.2国内外研究现状 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 系统流程…

任务看板是什么?如何选择合适的任务看板工具?

一、任务看板是什么? 任务看板是一种可视化的项目管理工具,它通常以板状的形式呈现,将任务以卡片的形式展示在不同的列中,每一列代表任务的不同状态。例如,待办事项、进行中、已完成等。任务看板能够帮助团队成员清晰…

使用 Flask 实现简单的登录注册功能

目录 1. 引言 2. 环境准备 3. 数据库设置 4. Flask 应用基本配置 5. 实现用户注册 6. 实现用户登录 7. 路由配置 8. 创建前端页面 9. 结论 1. 引言 在这篇文章中,我们将使用 Flask 框架创建一个简单的登录和注册系统。Flask 是一个轻量级的 Python Web 框架…

合合信息亮相2024中国模式识别与计算机视觉大会,用AI构建图像内容安全防线

近日,第七届中国模式识别与计算机视觉大会(简称“PRCV 2024”)在乌鲁木齐举办。大会由中国自动化学会(CAA)、中国图象图形学学会(CSIG)、中国人工智能学会(CAAI)和中国计…

pytorh学习笔记——cifar10(六)MobileNet V1网络结构

基础知识储备: 一、深度可分离卷积(Depthwise Separable Convolution) MobileNet的核心是深度可分离卷积(Depthwise Separable Convolution),深度可分离卷积是卷积神经网络(CNN&#xf…

IDM下载器 (Internet Download Manager) v6.42.2 中文免激活绿色版

Internet Download Manager (IDM下载器) 是一款先进的下载工具,可以提升您的下载速度高达5倍,支持续传,IDM可以让用户自动下载某些类型的文件,它可将文件划分为多个下载点以更快速度下载,并列出最近的下载,方便访问文件。相对于其…

Web刷题日记1---清风

[GDOUCTF 2023]EZ WEB 题目网站在NSSCTF 这个题目有一个新的知识点,对于我来说比较的少见吧,第一次遇见。em...是什么呢?后面再说 进入靶场,比较突兀,点了这个button后,提示flag在附近 查看源码,有提示…

C#从零开始学习(用户界面)(unity Lab4)

这是书本中第四个unity Lab 在这次实验中,将学习如何搭建一个开始界面 分数系统 点击球,会增加分数 public void ClickOnBall(){Score;}在OneBallBehaviour类添加下列方法 void OnMouseDown(){GameController controller Camera.main.GetComponent<GameController>();…

【踩坑随笔】Mask_RCNN基于服务器环境跑通Demo成功版

踩过的坑一个接一个&#xff0c;最后放弃在window环境下去尝试了&#xff0c;看到的大多有效的教程也都是ubuntu系统下的&#xff0c;鉴于我的电脑空间不够造了而且安双系统操作不当可能会导致本来的系统崩溃&#xff0c;所以干脆直接服务器租卡了&#xff0c;本文的环境亲测成…

10分钟使用Strapi(无头CMS)生成基于Node.js的API接口,告别繁琐开发,保姆级教程,持续更新中。

一、什么是Strapi&#xff1f; Strapi 是一个开源的无头&#xff08;headless&#xff09; CMS&#xff0c;开发者可以自由选择他们喜欢的开发工具和框架&#xff0c;内容编辑人员使用自有的应用程序来管理和分发他们的内容。得益于插件系统&#xff0c;Strapi 是一个灵活的 C…

【数据结构和算法】三、动态规划原理讲解与实战演练

目录 1、什么是动态规划&#xff1f; 2、动态规划实战演练 2.1 力扣题之爬楼梯问题 &#xff08;1&#xff09;解题思路1: &#xff08;2&#xff09;解题思路2: &#xff08;3&#xff09;动态规划&#xff08;DP&#xff09;&#xff1a;解题思路 &#xff08;4&#x…

【R + Python】iNaturalist 网站图片下载 inat api

文章目录 一、iNaturalist 简介二、R语言API&#xff1a;rinat三、示例3.1 获取观测数据3.2 绘制可视化图像函数用法 3.4 在区域网格中搜索3.5 下载图片3.51 提取图片 url3.52 下载图片: R语言3.53 下载图片: python 四、获取详细rinat包的文档 一、iNaturalist 简介 &#x1…