正则表达式与通配符 -- *?在正则表达式与通配符中的区别

news2024/9/28 23:34:05

1、前言

最近因为工作需要写一些自动化脚本,里面需要用到正则表达式来匹配特定的字符串,于是查了一些正则表达式相关的资料。资料里面都提到:*匹配前面的子表达式0次或任意多次。我当时就纳闷,*到底是表示的是匹配的次数还是可以匹配任意字符呀?因为印象中,*也可以匹配任意字符

后面有继续查阅资料,才弄明白自己混淆了正则表达式与通配符,*在正则表达式和通配符中的含义是不一样的

类似的还有字符:?

2、正则表达式与通配符使用场景

有的场景,我们使用的是正则表达式,有的场景我们需要使用通配符。

由于我是在linux环境用得比较多,下面以shell脚本举例:

  正则表达式使用场景:

正则表达式主要用来匹配文件中的字符串,主要操作有grep、awk、sed。简单来说,重点在于操作文件的具体内容,主要用于shell脚本中

通配符的使用场景:

通配符也叫文件名替换,因此主要是用来匹配文件名并进行相关的操作,主要在shell命令行中使用。常见的操作有:

ls、find、cp、mv等。

总结就是:正则表达式主要用于shell脚本,而通配符主要用于shell命令行

3、正则表达式与通配符具体的使用区别

3.1通配符的基本用法

通配符主要用于shell命令行中。常见的匹配规则有:

通配符主要用法
通配符含义举例
*匹配0或多个任意字符a*匹配a开头的任意文件
匹配任意单个字符a?.txt可以匹配ab.txt,ac.txt,但是不能匹配abc.txt
[]匹配括号中任意字符

[abc].txt可以匹配a.txt 、b.txt、 c.txt

[!]匹配不在括号中的任意字符[!abc]*可以匹配不宜abc开头的任意文件
[a-z]匹配a-z的任意单个字符,只能用于查找文件不能用于创建文件[a-z]*匹配a-z开头的任意文件
{a,b,z}逗号分隔表示单个字符,可用于创建和查找文件{a,b,z}*表示以a或b或z开头的任意文件
{a..z}..分隔表示连续字符,表示范围{a..z}*表示任意小写字母开头的文件

特别需要说明的是:

由于上面表中的一些字符,如*?[]等字符具有特殊的含义(用法),例如,*并不是代表这个字符本身,而是代表任意字符,因此如果需要匹配*本身,需要转义。转义用\表示,如

\*表示*本身,\*abc 可以匹配字符串 "*abc"

为了帮助大家更好的理解,下面做一些demo:

当前目录的结构如下:

ls [hs]* # 列出所有h或s开头的文件,包括h或s开头的文件夹内的文件

 

touch  test{1..3}.txt  # 创建text1到test3.txt

3.2 正则表达式的基本用法

正则表达式主要用于shell脚本中。常见用法如下:

正则表达式的主要用法
元字符含义用法举例
()表示一个字表达式,括号内是一个整体
*前一个子表达式或字符匹配0或任意多次

ab*可以匹配a、ab、abb、abbb等

h(ab)*可以匹配h或hab或habab

前一个子表达式或字符匹配0或1次h(ab)*可以匹配h或hab,不能匹配habab
+前一个子表达式1次或以上,扩展正则表达式
.匹配出换行符\n之外的任意单个字符
[]匹配括号中任意一个指定字符,只匹配一个字符[aeiou]可以匹配google中的o e
[^]匹配不再括号中的任意一个字符
^匹配行首(当不位于[]内时)^hello匹配hello开头的字符串
$匹配行尾
\转义字符,取消特殊含义\可以匹配字符*,此时*不再表示匹配次数
{n}表示前面的字符恰好n次
{n,}表示前面的字符最少出现n次
{n,m}表示前面的字符出现n~m次
\1引用第一个左括号以及与之对应的右括号所包括的所有内容,\2同理

同通配符的规则,一样,匹配上面表中的特殊字符(元字符)时,也需要转义:

例如\*表示*这个字符本身,次数*不再表示前面的字符可以出现的次数为任意次。

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

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

相关文章

2. JVM内存模型深度剖析与优化

JVM性能调优 1. JDK的体系结构2. Java语言的跨平台特性3.JVM整体结构及内存模型3.1 内存模型3.1.1 PC寄存器(线程私有)3.1.2 虚拟机栈(线程私有)1. 局部变量表2. 操作数栈 本文是按照自己的理解进行笔记总结,如有不正确…

SimpleCG绘图函数(3)--绘制矩形

前面我们已经学习了点和线的绘制,本篇我们继续绘图函数学习----矩形的绘制,也就是长方形的绘制,并给出一个绘制楼房的例子演示矩形的应用。 所有绘制矩形相关函数如下: //以下矩形左上角坐标(left, top),右下角坐标(right,bottom ) //以线条…

跨境电商系统开发-电商商城系统平台定制方案

随着业务的拓展,不少企业开始将目光转向国外市场,那么如何定制一套属于想自己的跨境出海电商商城方案呢?需要做好以下关口把关: 欢迎名片交流探讨开发平台流程 买家端(h5/pc/app) www.mardao.cn 账号 密码 卖家端(h5/pc)…

八、(重点)视图集ModelViewSet自定义action路由routers

上一章: 七、Django DRF框架GenericAPIView--搜索&排序&分页&返回值_做测试的喵酱的博客-CSDN博客 下一章: 九、DRF生成API文档_做测试的喵酱的博客-CSDN博客 一、视图集ModelViewSet与ReadOnlyViesSet ModelViewSet视图集 与 ReadOnly…

基于FPGA:运动目标检测(包围盒仿真工程,及一些调试问题)

目录 前言一、安装器件库二、仿真工程操作1、进入文件列表2、找到bounding_box_locate.vt,双击打开文件3、修改路径4、路径设置5、切换回“Hierarchy”,即工程界面6、运行仿真7、查看波形 重点:调试问题三、仿真代码1、仿真顶层文件2、绘制包…

node篇-fs模块儿

nodejs-fs模儿 异步 1. mkdir() 创建一个目录 // 1.mkdir 创建一个目录,回调函数的参数含义:err const fs require(fs); fs.mkdir(./avater,(err)>{console.log(err);if(err && err.code EEXIST){console.log(当前目录已经存在)} }) 当我…

华硕天选4R FA617原装Windows11原厂预装系统工厂模式恢复安装带 ASUSRecevory 一键还原22H2版本

华硕天选4R FA617X原装Windows11原厂预装系统工厂模式恢复安装带ASUSRecevory一键还原 文件地址:https://pan.baidu.com/s/1Pq09oDzmFI6hXVdf8Vqjqw?pwd3fs8 提取码:3fs8 华硕工厂恢复系统 ,安装结束后带隐藏分区以及机器所有驱动软件 需准备一个16…

浅谈NoSQL数据库

数据库 数据库,又称为数据管理系统,是处理的数据按照一定的方式储存在一起,能够让多个用户共享、尽可能减小冗余度的数据集合,简而言之可视为电子化的文件柜——存储电子文件的处所。 数据库有:Oracle数据库、ACCESS数…

代码随想录算法训练营第四十五天 | 力扣 70. 爬楼梯(进阶), 322. 零钱兑换, 279.完全平方数

70. 爬楼梯(进阶) 题目 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 改为:一步一个台阶,两个台阶,三个台阶&#xff…

【浅学 JDBC】

浅学JDBC 笔记记录 一、1. JDBC的概念2. JDBC快速入门2.1 DriverManager2.2 Connection2.3 Statement2.4 ResultSet 3. JDBC入门案例使用3.1 查询所有学生信息3.2 根据id查询学生信息&&新增学生信息&&修改学生信息&&删除学生信息 一、 1. JDBC的概念 …

中科易安8周年,与你相约联网智能门锁

中科易安与物联网技术发展同频 持续推动安防信息化建设 打造多场景应用的数智化通行解决方案 促进技术与安全精准对接 联网智能门锁技术硬核 中科易安打造集NB-IoT、Sub-1G Cat.1、Wifi、RS485和BLE 5.0 在内的六大通信技术组网方案 以“联网”赋能智能门锁 实现通行数…

C++11之atomic原子操作

atomic介绍 多线程间是通过互斥锁与条件变量来保证共享数据的同步的,互斥锁主要是针对过程加锁来实现对共享资源的排他性访问。很多时候,对共享资源的访问主要是对某一数据结构的读写操作,如果数据结构本身就带有排他性访问的特性&#xff0c…

chatgpt赋能python:Python中的等待:理解和优化

Python中的等待:理解和优化 Python是一种强大的编程语言,在构建各种应用程序时很常用。但是,随着应用程序越来越复杂,需要等待一些操作时,Python中的等待传统上会导致性能下降。在这篇文章中,我们将深入了…

可持续能源技术改变世界

文章目录 一、你在工作或生活中接触过可持续能源技术吗?可以分享下你的经历与看法。二、你认为可持续能源技术的优势和挑战有哪些?三、你了解过可持续能源技术的应用现状吗?四、对于可持续能源技术真的否改变世界这个问题你怎么看&#xff1f…

ifconfig工具与驱动交互解析(ioctl)

Linux ifconfig(network interfaces configuring) Linux ifconfig命令用于显示或设置网络设备。ifconfig可设置网络设备的状态,或是显示目前的设置。同netstat一样,ifconfig源码也位于net-tools中。源码位于net-tools工具包中&am…

《消息队列高手课》课程笔记(七)

如何使用异步设计提升系统性能? 异步设计如何提升系统性能? 假设我们要实现一个转账的微服务 Transfer(accountFrom, accountTo, amount),这个服务有三个参数:分别是转出账户、转入账户和转账金额。 这个例子的实现过程中&…

chatgpt赋能python:Python中如何反转字符串:三种简单方法

Python中如何反转字符串:三种简单方法 当我们在处理字符串时,有时需要将其反向排列。在Python中,这可以通过以下三种简单方法实现: 1. 使用内置的切片方法 在Python中,可以使用字符串的切片方法将其反转。这种方法非…

(浙大陈越版)数据结构 第三章 树(上) 3.4 小白专场:树的同构(PTA编程题讲解)

题意理解和二叉树表示 给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换变成T2,则称两棵树是“同构”的。 eg1:现请你判断如下两棵树(左侧为T1,右侧为T2)是否为同构树? 显然T1可以通过有限次左右孩子…

REST风格 -- SpringMVC入门保姆级教程(四)

文章目录 前言四、REST风格1.了解REST风格2.REST风格写法一般步骤3.REST风格快速开发4.REST风格中的注解5. 案例:基于REST风格页面数据交互 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然&#…

Redis高级篇 - 分布式缓存

分布式缓存 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: 1.Redis持久化 Redis有两种持久化方案: RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件)&#xff0c…