通配符(Wildcard)与正则表达式(Regular Expression)的关系及区别
通配符(Wildcard)与正则表达式(Regular Expression)的关系及区别
1. 通配符(Wildcard)
-
定义:通配符是用于简单模式匹配的特殊符号,主要用于文件名匹配(如命令行操作)。
-
常见符号:
*
:匹配任意长度的任意字符(包括空字符)。- 例:
*.txt
匹配所有以.txt
结尾的文件。
- 例:
?
:匹配单个任意字符。- 例:
file?.log
匹配file1.log
、fileA.log
等。
- 例:
[]
:匹配括号内的单个字符(支持范围,如[a-z]
)。- 例:
file[0-9].txt
匹配file0.txt
、file1.txt
等。
- 例:
-
应用场景:
- 命令行操作(如
rm *.tmp
删除所有临时文件)。 - 文件批量处理(如
cp image-*.jpg /backup
)。
- 命令行操作(如
2. 正则表达式(Regular Expression, Regex)
-
定义:正则表达式是用于复杂文本匹配的语法规则,支持更灵活的字符组合、重复模式及逻辑判断。
-
常见符号:
.
:匹配任意单个字符(相当于通配符的?
)。*
:匹配前一个字符的零次或多次重复(与通配符的*
含义不同)。+
:匹配前一个字符的一次或多次重复。^
和$
:匹配字符串的开头和结尾。\d
:匹配数字,\w
匹配单词字符,\s
匹配空白符等。|
:逻辑“或”,如cat|dog
匹配cat
或dog
。
-
应用场景:
- 文本搜索与替换(如代码编辑器中的批量替换)。
- 数据验证(如邮箱、手机号格式校验)。
- 日志分析(提取特定时间或错误信息)。
- 编程中的字符串处理(如 Python 的
re
模块)。
3. 通配符与正则表达式的关系
-
相似性:两者都用于模式匹配,但语法规则和功能复杂度不同。
-
核心区别:
特性 通配符 正则表达式 用途 文件名匹配 文本内容匹配 语法复杂度 简单(仅 *
?
[]
)复杂(支持量词、分组、逻辑等) 工具/场景 Shell 命令、文件管理器 编程语言(Python/JS等)、文本编辑器 -
常见混淆点:
- 通配符的
*
和正则的*
含义不同:- 通配符
*.txt
直接匹配所有.txt
文件。 - 正则表达式
a.*
匹配以a
开头,后跟任意字符的字符串(如apple
、a123
)。
- 通配符
- 通配符的
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 解释,而正则表达式需通过
grep
、sed
等工具显式调用。 - 转义字符:正则表达式中特殊符号(如
*
、.
)需用\
转义,而通配符一般无需转义。 - 性能差异:正则表达式功能强大但复杂度高,简单匹配优先用通配符。
总结:
- 通配符:简单、高效,适合文件名匹配。
- 正则表达式:功能强大,适合复杂文本处理。
根据场景选择工具:文件操作用通配符,文本处理用正则表达式!
相关文章:
通配符(Wildcard)与正则表达式(Regular Expression)的关系及区别
通配符(Wildcard)与正则表达式(Regular Expression)的关系及区别 1. 通配符(Wildcard) 定义:通配符是用于简单模式匹配的特殊符号,主要用于文件名匹配(如命令行操作&…...

历年山东大学计算机保研上机真题
历年山东大学计算机保研上机真题 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) 天线,因为它可以确定来自各个方…...
Spring Boot中的事件与JMS消息集成
Spring Boot事件机制 Spring框架的事件处理是其核心特性之一,通过ApplicationEvent类和ApplicationListener接口实现。在Spring Boot应用中,事件机制是实现模块间消息传递的重要方式,通常用于业务逻辑内部通信。 内置事件类型 Spring应用上下文在启动时会触发多种内置事件…...
ubuntu/windows系统下如何让.desktop/.exe文件 在开机的时候自动运行
目录 1,让 .desktop 文件在 Ubuntu 开机时自动启动 1.1 创建 autostart 目录(如果不存在) 1.2 将 .desktop 文件复制到 autostart 目录 1.3 确保 .desktop 文件有可执行权限 2,windows 2.1 打开「启动」文件夹: 2.2 将 .exe 或快捷方…...

云计算数据治理
知识星球:数据书局。打算通过知识星球将这些年积累的知识、经验分享出来,让各位在数据治理、数据分析的路上少走弯路,另外星球也方便动态更新最近的资料,提供各位一起讨论数据的小圈子 1.摘要 云计算可以推动创新和各行业应用的…...
【Net】TCP粘包与半包
文章目录 TCP粘包与半包1 背景2 粘包(packet stick)3 半包(packet split)4 为什么会出现粘包/半包?5 如何解决?6 示例7 总结 TCP粘包与半包 在网络编程中,粘包和半包问题是常见的 TCP 协议特有…...

【Android】如何抓取 Android 设备的 UDP/TCP 数据包?
目录 前言理解抓包tcpdump 实时抓包Wireshark 解包抓包后的一些思考 前言 在真正接触 UDP/TCP 抓包之前,我一直以为这是一项高深莫测的技术。可当我们真正了解之后才发现,其实并没有那么复杂——不过如此。 所谓的大佬,往往只是掌握了你尚未…...
深度解析 Nginx 配置:从性能优化到 HTTPS 安全实践
引言 Nginx 作为高性能的 Web 服务器和反向代理,其配置灵活性和强大功能备受开发者青睐。本文基于一份生产环境的 Nginx 配置文件,详细拆解其核心配置逻辑,涵盖性能优化、HTTPS 安全配置、反向代理及静态资源处理等关键环节,帮助…...
触发器与存储过程详解
触发器与存储过程详解 1. 触发器(Trigger)基础概念 1.1 定义与特性 go专栏:https://duoke360.com/tutorial/path/golang 触发器是数据库中的一种特殊存储程序,它在特定数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行。触发器具有以下核心特性: 事件驱动:与表事件绑…...
游戏盾与高防CDN的协同防御策略分析
游戏盾与高防CDN的协同防御策略可以从技术互补性、分层防护机制、动态流量调度等角度展开分析,以下为核心要点: 1. 分层防御架构:流量分层过滤 高防CDN边缘层:利用全球分布的边缘节点作为“第一道防线”…...

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&…...
迁移学习模型构建指南(Python实现)
迁移学习模型构建指南(Python实现) 一、迁移学习概述 迁移学习是一种机器学习方法,通过将预训练模型的知识迁移到新任务中,显著提升模型性能和训练效率。其核心思想是:模型在大型数据集上学习到的通用特征(如边缘、纹理、形状)可被复用至相关任务。 迁移学习类型: 特…...

【设计模式-4.6】行为型——状态模式
说明:本文介绍行为型设计模式之一的状态模式 定义 状态模式(State Pattern)也叫作状态机模式(State Machine Pattern),允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类…...
【LeetCode 热题100】动态规划实战:打家劫舍、完全平方数与零钱兑换(LeetCode 198 / 279 / 322)(Go语言版)
💰 动态规划实战:打家劫舍、完全平方数与零钱兑换(LeetCode 198 / 279 / 322) 本篇博客一次性带你掌握三道 LeetCode 中经典的动态规划(DP)题目: 🏠 198. 打家劫舍(Hou…...

换ip是换网络的意思吗?怎么换ip地址
在数字化时代,IP地址作为我们在网络世界的"身份证",其重要性不言而喻。许多人常将"换IP"与"换网络"混为一谈,实际上两者虽有联系却存在本质区别。本文将澄清这一概念误区,并详细介绍多种更换IP地址…...
【软件】在 macOS 上安装 MySQL
在 macOS 上安装 MySQL 有多种方法,以下是两种常见的安装方式:通过 Homebrew 安装和通过安装包安装。以下是详细的步骤: 一、通过 Homebrew 安装 MySQL Homebrew 是 macOS 的包管理器,使用它安装 MySQL 非常方便。 1.安装 Home…...

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

随笔20250530 C# 整合 IC卡读写技术解析与实现
以下是一个完整、最简化的 FeliCa 读取整合示例(无需 SDK,基于 PCSC NuGet 包),你可以直接运行这个控制台程序,验证能否识别 RC-S300 并读取卡片 UID: 🧪 示例说明 📦 使用 NuGet 包…...
循环神经网络(RNN):为什么它能处理时序数据?它真的能减轻过拟合吗?
循环神经网络(RNN):为什么它能处理时序数据?它真的能减轻过拟合吗? 在深度学习领域,循环神经网络(RNN, Recurrent Neural Network)是一种非常重要的神经网络结构,尤其适…...
JVM与JMM深度解析:从Java 8到Java 21的演进
文章目录 第一部分:JVM基础概念与架构JVM是什么?JVM整体架构运行时数据区类加载机制执行引擎 第二部分:Java内存模型(JMM)什么是Java内存模型JMM的核心问题主内存与工作内存内存间交互操作重排序与happens-before原则v…...