正则表达式和通配符

文章目录

  • 正则表达式和通配符的区别
      • 正则表达式(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)

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

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

相关文章

面试时被问到“Scaling Law”,该怎么答?

在大模型的研发中,通常会有下面一些需求: 计划训练一个 10B 的模型,想知道至少需要多大的数据? 收集到了 1T 的数据,想知道能训练一个多大的模型? 老板准备 1 个月后开发布会,给的资源是 100 …

Linux安装Nginx教程(rpm安装方式)

本章教程,主要介绍如何在Linux Centos7系统上,使用rpm的方式进行安装Nginx。 一、安装wget插件 如果不存在wget下载插件,需要安装一下。 yum install -y wget二 、下载rpm安装包 官方提供的rpm下载地址:https://nginx.org/packages/centos/7/x86_64/RPMS/ <

【Nginx系列】499错误

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Postman常见问题及解决方(全)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、网络连接问题 如果Postman无法发送请求或接收响应&#xff0c;可以尝试以下操作&#xff1a; 检查网络连接是否正常&#xff0c;包括检查网络设置、代理设置…

软考中级嵌入式系统设计师笔记分享(二)

1.TTL 电路是电流控制器件&#xff0c;而CMOS 电路是电压控制器件。 2.TTL 电路的速度快&#xff0c;传输延迟时间短(5-10ns)&#xff0c;但是功耗大。 常见的串行总线有 SPI、II2C、USB、RS232/RS422/RS485、CAN等;高速串行总线主要有 SATA、PCIE、IEEE 1394、Rapidl0、USB 3…

1.DBeaver连接hive数据库

1.hive开启远程服务&#xff0c;linux中直接输入&#xff1a;hiveserver2 2.解压dbeaver和hive-jdbc-2.1.1.zip 3.双击打开 4.数据库&#xff0c;新建连接 5.搜索hive 6.配置参数 7.编辑驱动设置 8.添加jar包 9.测试连接 10.右击&#xff0c;新建sql编辑器 11.执行sql 12.调整字…

【每日一题】LeetCode - 整数转罗马数字

在罗马数字系统中&#xff0c;七个不同的符号代表不同的值&#xff1a; 符号值I1V5X10L50C100D500M1000 罗马数字的表示方式是从最大值开始逐次减去每个符号的值&#xff0c;通过组合这些符号构建最终的表示形式。本文将介绍一个基于贪心策略的解决方案&#xff0c;将整数转换…

unity开发之Line Renderer

Line Renderer 是一个有用的工具&#xff0c;可让您在游戏中绘制线条。 它可以用作游戏的函数或调试标记。 在这里&#xff0c;让我们创建一个程序&#xff0c;根据基本用法在 Line Renderer 上移动。 目录 如何使用 Line Renderer 和基础知识 在场景中放置 Line Renderer关键组…

Catalan数 C++解决

输入描述 输入一个正整数n。 输出描述 输出Catalan数的前n项。 用例输入 1 0 用例输出 1 1 用例输入 2 5 用例输出 2 1 1 2 5 14 42 #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;int dp[n1]{0};dp[0]dp[1]1;for(int m2;…

守护头顶安全——AI高空抛物监测,让悲剧不再重演

在城市的喧嚣中&#xff0c;我们享受着高楼林立带来的便捷与繁华&#xff0c;却往往忽视了那些隐藏在高空中的危险。近日&#xff0c;震惊全国的高空抛物死刑案件被最高院核准并执行。案件中被告人多次高空抛物的举动&#xff0c;夺去了无辜者的生命&#xff0c;也让自己付出了…

Go 语言中的 for range 循环教程

在 Go 语言中&#xff0c;for range 循环是一个方便的语法结构&#xff0c;用于遍历数组、切片、映射和字符串。本教程将通过示例代码来帮助理解如何在 Go 中使用 for range 循环。 package mainimport "fmt"func main() {// 遍历切片并计算和nums : []int{2, 3, 4}…

Kafka-代码示例

一、构建开发环境 File > New > Project 选择一个最简单的模板 项目和坐标命名 配置maven路径 添加maven依赖 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients --><dependency><groupId>org.apache.kaf…

深度学习 基本函数01

np.dot 是 NumPy 库中的一个函数&#xff0c;用于计算两个数组的点积&#xff08;也称为内积或数量积&#xff09;。点积是两个向量的对应元素乘积之和。 np.random.normal 是 NumPy 库中的一个函数&#xff0c;用于生成符合正态分布&#xff08;也称为高斯分布&#xff09;的…

项目管理软件中这6个小技巧帮助项目经理同时管理多个项目

在网上看到一个数据&#xff0c;只有15%的项目经理一次只需要负责一个项目&#xff0c;其他的项目经理都需要同时负责多个项目&#xff0c;甚至有15%的项目经理一次需要负责10个以上的项目。 我在工作中&#xff0c;也只有很少很少的时间里&#xff0c;是一次性只负责一个项目…

目标检测——yolov5-3.1的环境搭建和运行

第一步&#xff1a;安装anaconda环境&#xff0c;并且配置好cuda&#xff0c;安装需要的基本包 查看对应cuda版本&#xff0c;后续下载cudatoolkit需要对应版本 nvcc -V 第二步&#xff1a;创建虚拟环境&#xff0c;激活环境&#xff0c;安装所需的包 conda create -n yolo…

Visual studio 下载安装

1&#xff0c;Visual stutdio 网址 下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 2&#xff0c;下划页面&#xff0c;点击 较早的下载 3&#xff0c;选择对应的版本进行下载

《深度学习》YOLO v1网络架构 、损失值、NMS极大值抑制

目录 一、Yolo系列v1 1、核心思想 2、示例 3、流程图解析 二、YOLO系列v1损失函数 1、位置误差 2、置信度误差 3、类别概率损失 三、NMS非极大值抑制 1、概念 2、步骤 四、YOLO v1优缺点 1、优点 1&#xff09;速度快 2&#xff09;端到端 3&#xff09;多尺度…

docker 可用镜像服务地址(2024.10.25亲测可用)

1.错误 Error response from daemon: Get “https://registry-1.docker.io/v2/” 原因&#xff1a;镜像服务器地址不可用。 2.可用地址 编辑daemon.json&#xff1a; vi /etc/docker/daemon.json内容修改如下&#xff1a; {"registry-mirrors": ["https://…

光伏业务管理软件:提升企业管理效率的利器

一、优化业务流程 光伏业务管理软件能够对企业的各项业务流程进行全面梳理和优化。从项目前期的规划设计、设备采购&#xff0c;到项目建设中的施工管理、质量控制&#xff0c;再到项目后期的运维服务&#xff0c;软件都可以进行有效的跟踪和管理。 通过规范业务流程&#xf…

银行客户贷款行为数据挖掘与分析

#1024程序员节 | 征文# 在新时代下&#xff0c;消费者的需求结构、内容与方式发生巨大改变&#xff0c;企业要想获取更多竞争优势&#xff0c;需要借助大数据技术持续创新。本文分析了传统商业银行面临的挑战&#xff0c;并基于knn、逻辑回归、人工神经网络三种算法&#xff0…