通配符(Wildcard)与正则表达式(Regular Expression)的关系及区别

news2025/6/5 5:02:45

通配符(Wildcard)与正则表达式(Regular Expression)的关系及区别

1. 通配符(Wildcard)
  • 定义:通配符是用于简单模式匹配的特殊符号,主要用于文件名匹配(如命令行操作)。

  • 常见符号

    • *:匹配任意长度的任意字符(包括空字符)。
      • 例:*.txt 匹配所有以 .txt 结尾的文件。
    • ?:匹配单个任意字符。
      • 例:file?.log 匹配 file1.logfileA.log 等。
    • []:匹配括号内的单个字符(支持范围,如 [a-z])。
      • 例:file[0-9].txt 匹配 file0.txtfile1.txt 等。
  • 应用场景

    • 命令行操作(如 rm *.tmp 删除所有临时文件)。
    • 文件批量处理(如 cp image-*.jpg /backup)。

2. 正则表达式(Regular Expression, Regex)
  • 定义:正则表达式是用于复杂文本匹配的语法规则,支持更灵活的字符组合、重复模式及逻辑判断

  • 常见符号

    • .:匹配任意单个字符(相当于通配符的 ?)。
    • *:匹配前一个字符的零次或多次重复(与通配符的 * 含义不同)。
    • +:匹配前一个字符的一次或多次重复。
    • ^$:匹配字符串的开头和结尾。
    • \d:匹配数字,\w 匹配单词字符,\s 匹配空白符等。
    • |:逻辑“或”,如 cat|dog 匹配 catdog
  • 应用场景

    • 文本搜索与替换(如代码编辑器中的批量替换)。
    • 数据验证(如邮箱、手机号格式校验)。
    • 日志分析(提取特定时间或错误信息)。
    • 编程中的字符串处理(如 Python 的 re 模块)。

3. 通配符与正则表达式的关系
  • 相似性:两者都用于模式匹配,但语法规则和功能复杂度不同

  • 核心区别

    特性通配符正则表达式
    用途文件名匹配文本内容匹配
    语法复杂度简单(仅 * ? []复杂(支持量词、分组、逻辑等)
    工具/场景Shell 命令、文件管理器编程语言(Python/JS等)、文本编辑器
  • 常见混淆点

    • 通配符的 * 和正则的 * 含义不同:
      • 通配符 *.txt 直接匹配所有 .txt 文件。
      • 正则表达式 a.* 匹配以 a 开头,后跟任意字符的字符串(如 applea123)。

4. 典型应用场景对比
  • 通配符适用场景

    • 命令行操作:快速匹配文件。
      # 删除所有临时文件
      rm *.tmp
      
      # 查找以 `2023` 开头的日志文件
      ls 2023*.log
      
    • 文件管理:批量重命名或复制。
  • 正则表达式适用场景

    • 数据清洗:提取结构化信息。
      import re
      text = "订单号:ABC-1234,日期:2023-10-01"
      pattern = r"\b[A-Z]{3}-\d{4}\b"  # 匹配订单号
      order_id = re.findall(pattern, text)  # 结果:["ABC-1234"]
      
    • 表单验证:检查输入合法性。
      // 验证邮箱格式
      const emailRegex = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
      if (!emailRegex.test(userInput)) alert("邮箱格式错误!");
      
    • 日志分析:过滤关键错误信息。
      # 使用 grep 查找所有包含 `ERROR` 的行
      grep "ERROR" server.log
      

5. 注意事项
  • 避免混淆:在 Shell 中,通配符由 Shell 解释,而正则表达式需通过 grepsed 等工具显式调用。
  • 转义字符:正则表达式中特殊符号(如 *.)需用 \ 转义,而通配符一般无需转义。
  • 性能差异:正则表达式功能强大但复杂度高,简单匹配优先用通配符。

总结

  • 通配符:简单、高效,适合文件名匹配。
  • 正则表达式:功能强大,适合复杂文本处理。
    根据场景选择工具:文件操作用通配符,文本处理用正则表达式!

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

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

相关文章

历年山东大学计算机保研上机真题

历年山东大学计算机保研上机真题 2025山东大学计算机保研上机真题 2024山东大学计算机保研上机真题 2023山东大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 从1到100找质数 题目描述 从 1 1 1 到 100 100 100 中找出所有的质数。 输入格式 …

Java处理动态的属性:字段不固定、需要动态扩展的 JSON 数据结构

文章目录 引言I `JSONObject` 接收和返回JSONObject 接收和返回数据存储II 签名测试接口dto的定义签名计算III JsonAnySetter 和JsonAnyGetter 注解@JsonAnySetter 的用法@JsonAnyGetter 的用法综合示例引言 应用场景: 签名测试接口、表单配置项、参数列表、插件信息等。技术实…

MAC电脑怎么通过触摸屏打开右键

在Mac电脑上,通过触摸屏打开右键菜单的方法如下: 法1:双指轻点:在触控板上同时用两根手指轻点,即可触发右键菜单。这是Mac上常用的右键操作方法。 法2:自定义触控板角落:可以设置触控板的右下角或左下角作为右键区域…

用 Whisper 打破沉默:AI 语音技术如何重塑无障碍沟通方式?

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

【东枫科技】KrakenSDR 天线阵列设置

标准测向需要五根相同的全向天线。您可以折衷使用更少的天线,但为了获得最佳性能,我们建议使用全部五根天线。这些天线通常是磁铁安装的鞭状天线,或偶极子天线。我们建议始终使用均匀圆形阵列 (UCA) 天线,因为它可以确定来自各个方…

云计算数据治理

知识星球:数据书局。打算通过知识星球将这些年积累的知识、经验分享出来,让各位在数据治理、数据分析的路上少走弯路,另外星球也方便动态更新最近的资料,提供各位一起讨论数据的小圈子 1.摘要 云计算可以推动创新和各行业应用的…

【Android】如何抓取 Android 设备的 UDP/TCP 数据包?

目录 前言理解抓包tcpdump 实时抓包Wireshark 解包抓包后的一些思考 前言 在真正接触 UDP/TCP 抓包之前,我一直以为这是一项高深莫测的技术。可当我们真正了解之后才发现,其实并没有那么复杂——不过如此。 所谓的大佬,往往只是掌握了你尚未…

Scratch节日 | 六一儿童节射击游戏

六一儿童节快乐!这款超有趣的 六一儿童节射击游戏,让你变身小猫弓箭手,守护节日的快乐时光! 🎮 游戏玩法 上下方向键:控制小猫的位置,自由移动,瞄准目标! 空格键&#…

GPU层次结构(Nvidia和Apple M芯片,从硬件到pytorch)

这里写目录标题 0、驱动pytorch环境安装验证1.window环境2.Mac Apple M芯片环境 1、Nvidia显卡驱动、CUDA、cuDNN关系汇总1**1. Nvidia显卡驱动(Graphics Driver)****2. CUDA(Compute Unified Device Architecture)****3. cuDNN&a…

一次借助ChatGPT抵御恶意攻击的经历,为个人服务器添加自动防御系统Fail2ban

title: 一次借助ChatGPT抵御恶意攻击的经历,为个人服务器添加自动防御系统Fail2ban tags: 个人成长 categories:杂谈 我有一台个人服务器,托管着自己的WordPress网站,也放了RustDesk这种私有化的远程桌面工具,最近我发现RustDesk…

(九)深度学习---自然语言处理基础

分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机场贝叶斯层次聚类隐马尔可夫模型支持向量机高斯混合聚类LDA主题模型 一.文本数据的表示方法 二.神经网络文本情感分析案例 三…

【Java Web】速通Tomcat

参考笔记:JavaWeb 速通Tomcat_tomcat部署java项目-CSDN博客 目录 一、Tomcat服务 1. 下载和安装 2. 启动Tomcat服务 3. 启动Tomcat服务的注意事项 4. 关闭Tomcat服务 二、Tomcat的目录结构 1. bin 🌟 2. conf 🌟 3. lib 4. logs 5. temp 6. webapps 7. work 三、Web项目…

Docker快速部署数据同步工具DataX-Web

笔者最近有需求需要进行数据同步,目前确认DataX-Web适合快速搭建使用,满足基本需求。以此记录搭建Datax-Web过程和解决的坑。 一、启动MySQL容器 (1)首先,我们运行一个支撑DataX-Web运行的MySQL容器。 docker run --…

从零开始的云计算生活——第十四天,困难重重,安全管理。

一故事背景 在前面的基本无操作内容后,来到了大头内容,安全管理!其中的防火墙相关的内容更是重中之重,要好好掌握,熟练运用。 二SELinux安全上下文 1SELinux 简介 a. SELinux(Security-Enhanced Linux&…

【设计模式-4.6】行为型——状态模式

说明:本文介绍行为型设计模式之一的状态模式 定义 状态模式(State Pattern)也叫作状态机模式(State Machine Pattern),允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类…

换ip是换网络的意思吗?怎么换ip地址

在数字化时代,IP地址作为我们在网络世界的"身份证",其重要性不言而喻。许多人常将"换IP"与"换网络"混为一谈,实际上两者虽有联系却存在本质区别。本文将澄清这一概念误区,并详细介绍多种更换IP地址…

手机归属地查询接口如何用Java调用?

一、什么是手机归属地查询接口? 是一种便捷、高效的工具,操作简单,请求速度快。它不仅能够提高用户填写地址的效率,还能帮助企业更好地了解客户需求,制定个性化的营销策略,降低风险。随着移动互联网的发展…

随笔20250530 C# 整合 IC卡读写技术解析与实现

以下是一个完整、最简化的 FeliCa 读取整合示例(无需 SDK,基于 PCSC NuGet 包),你可以直接运行这个控制台程序,验证能否识别 RC-S300 并读取卡片 UID: 🧪 示例说明 📦 使用 NuGet 包…

基于爬取的典籍数据重新设计前端界面

1.BooksView(书籍列表页) 2.ClassicsView(目录页) 3.管理员端

揭秘 NextJS Script 组件

揭秘 NextJS Script 组件 Next.js 的 Script 组件是对原生 <script> 标签的增强封装&#xff0c;主要区别和优势如下&#xff1a; 自动优化加载策略&#xff08;支持按需/延迟加载&#xff09;避免重复加载内置性能优化&#xff08;如预加载、回调钩子&#xff09;简化…