正则表达式与通配符

1. 正则表达式与通配符

  • 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。
  • 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。

2. 通配符:

通配符作用
?匹配一个任意字符
*匹配0个或任意多个字符,也就是可以匹配任何内容
[]匹配中括号中任意一个字符
[-]匹配中括号中任意一个字符,-代表一个范围
[^]逻辑非,表示匹配不是中括号内的一个字符

3. 基本正则表达式

元字符作用
*前一个字符匹配0次或任意多次。
.匹配除了换行符外任意一个字符。
^匹配行首。例如:^hello会匹配以hello开关的行。
$匹配行尾。例如:hello$会匹配以hello结尾的行。
[]匹配中括号中指定的任意一个字符,只匹配一个字符。例如:[aeiou]匹配任意一个元音字符,[0-9]匹配任意一位数字,[a-z][0-9]匹配小写字母和一位数字构成的两位字符。
[^]匹配除中括号的字符以外的任意一个字符。例如:[0-9]匹配任意一位非数字字符,[a-z]匹配任意一位非小写字母。
\转义符。用于取消,将特殊符号的含义取消。
\{n\}表示其前面的字符恰好出现n次。例如:[0-9]\{4\}匹配4位数字,[1][3-8][0-9]\{9\}匹配手机号码。
\{n,\}表示其前面的字符出现不小于n次。例如:[0-9]\{2,\}表示两位及以上的数字。
\{n,m\}表示其前面的字符至少出现n次,最多出现m次。例如:[a-z]\{6,8\}匹配6到8位的小写字母。

例子:

  • “*”前一个字符匹配0次,或任意多次

# 匹配所有内容,包括空白行
grep "a*" test_rule.txt# 匹配至少包含一个a的行
grep "aa*" test_rule.txt# 匹配至少包含两个连续a的字符串
grep "aaa*" test_rule.txt# 匹配最少包含4个连接a的字符串
grep "aaaaa*" test_rule.txt
  • “.”匹配除换行符外任意一个字符

# "s..d" 会匹配在s和d这两个字母之间一定有两个字符的单词
grep "s..d" test_rule.txt# 匹配在s和d字母之间有任意字符
grep "s.*d" text_rule.txt# 匹配所有内容
grep ".*" test_rule.txt
  • “^”匹配行首,“$”匹配行尾

# 匹配以大写“M”开关的行
grep "^M" test_rule.txt# 匹配以小写“n”结尾的行
grep "n$" test_rule.txt# 匹配空白行
grep "^$" test_rule.txt
  • “[]”匹配中括号中指定的任意一个字符,只匹配一个字符

# 匹配s和i字母中,要不是a、要不是o
grep "s[ao]id" test_rule.txt# 匹配任意一个数字
grep "[0-9]" test_rule.txt# 匹配用小写字母开头的行
grep "^[a-z]" test_rule.txt
  • “[^]”匹配除中括号的字符以外的任意一个字符

# 匹配不用小写字母开关的行
grep "^[^a-z]" test_rule.txt# 匹配不用字母开头的行
grep "^[^a-zA-Z]" test_rule.txt
  • “\”转义符

# 匹配使用“.”结尾的行
grep "\.$" test_rule.txt
  • “\{n\}”表示其前面的字符恰好出现n次

# 匹配a字母连续出现3次的字符串
grep "a\{3\}" test_rule.txt# 匹配包含连续的三个数字的字符串
grep "[0-9]\{3\}" test_rule.txt
  • “\{n,m\}” 匹配其前面的字符至少出现n次,最多出现m次

# 匹配在字母s和i之间有最少一个a,最多3个a
grep "sa\{1,3\}i" test_rule.txt

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

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

相关文章

通过Cmake官网下载.gz文件安装最新版本的CMAKE、适用于debian

1.前往官网下载最新版本debian https://cmake.org/download/ 2.选他 3. 通过XFTP传输到服务器 4. 解压文件 #cd 进入对应目录,然后执行下面命令解压 $ tar -zxvf cmake-3.29.2.tar.gz5.执行这个文件 $ ./bootstrap6.完成之后再执行这个 $ make7.然后&#xff…

C++面经(简洁版)

1. 谈谈C和C的认识 C在C的基础上添加类,C是一种结构化语言,它的重点在于数据结构和算法。C语言的设计首要考虑的是如何通过一个过程,对输入进行运算处理得到输出,而对C,首先要考虑的是如何构造一个对象,通…

人工智能|推荐系统——推荐大模型最新进展

近年来,大语言模型的兴起为推荐系统的发展带来了新的机遇。这些模型以其强大的自然语言处理能力和丰富的知识表示,为理解和生成复杂的用户-物品交互提供了新的视角。本篇文章介绍了当前利用大型语言模型进行推荐系统研究的几个关键方向,包括嵌入空间的解释性、个性化推荐的知…

Amazon云计算AWS之[5]关系数据库服务RDS

文章目录 RDS的基本原理主从备份和下读写分离 RDS的使用 RDS的基本原理 Amazon RDS(Amazon Relational Database Service) 将MySQL数据库移植到集群中,在一定的范围内解决了关系数据库的可扩展性问题。 MySQL集群方式采用Share-Nothing架构。每台数据库服务器都是…

【C++】---STL容器适配器之stack

【C】---STL容器适配器之stack 一、什么是适配器?二、栈1、栈的性质2、栈类(1)栈的构造(2)empty()(3)push()(4)pop()(5)top()(6&#…

yolov8 dll 编译

1. 每次用yolo v8 都要用python ,对于我这种写软件的太不方便了,下面尝试编译dll 调用, 我已经有做好的模型.best.pt 参考视频方法: yolov8 TensorRT C 部署_哔哩哔哩_bilibili 【yolov8】tensorrt部署保姆级教程,c版_哔哩哔哩_bilibili 需…

Kafka分区机制

Kafka分区机制是Kafka消息队列中的一个重要概念,用于将消息分散存储在多个物理节点上,从而实现高吞吐量和可伸缩性。 Kafka的主题(Topic)可以分为多个分区(Partition),每个分区是一个有序的消息…

面经总结(二)(数据库)

数据库常识: 1、数据库系统包含什么? 包含了数据库、数据库管理系统、数据库管理员和应用程序。 数据库(DB):顾名思义是存放数据的仓库,实现数据的持久化。 数据库管理系统(DBMS):类似于操作系…

rabbitmq下载安装最新版本--并添加开机启动图文详解!!

一、简介 RabbitMQ是一个开源的遵循AMQP协议实现的消息中间件支持多种客户端语言,用于分布式系统中存储和转发消息, 这是 Release RabbitMQ 3.13.0 rabbitmq/rabbitmq-server GitHub 二、安装前准备 1、查看自己系统 确认操作系统版本兼容性 uname -a2、下载Erlang依赖包…

记录浏览器打开网站拦截提示不安全解决方法

浏览器可能会因为多种原因显示“不安全”的警告,这通常是由于安全设置不当或配置错误造成的。以下是一些常见的原因和解决方法: 1. HTTPS未启用 原因:如果网站使用HTTP而不是HTTPS,浏览器可能会显示不安全的警告。 解决方法:配置SSL/TLS证书并使用HTTPS来加密数据传输…

MySQL数据库常见SQL语句宝典

一 、常用操作数据库的命令 1.查看所有的数据库 : show databases;2.创建一个数据库 : create database if not exists 数据库名;3.删除一个数据库 : drop database if exists 数据库名;4.选择一张表 (注意在建表之前必须要选择数据库) : use 表名;* --tab 键的上面&#x…

K8s 使用 CephFS 作为后端存储(静态供给、动态供给)

一、K8s 使用 CephFS CephFS是 Ceph 中基于RADOS(可扩展分布式对象存储)构建,通过将文件数据划分为对象并分布到集群中的多个存储节点上来实现高可用性和可扩展性。 首先所有 k8s 节点都需要安装 ceph-common 工具: yum -y ins…

Redis是一款高性能的键值存储数据库,但除了存储数据,它还可以扮演消息队列的角色

Redis是一款高性能的键值存储数据库,但除了存储数据,它还可以扮演消息队列的角色。在Spring MVC中,我们可以利用Redis的特性来实现异步处理和任务调度。本文将介绍如何使用Redis作为消息队列,在Spring MVC中实现异步处理和任务调度…

Vue 组件分类、局部注册和全局注册

文章目录 背景知识组件分类安装 vue-cli示例设置组件局部注册设置组件全局注册 背景知识 开发 Vue 的两种方式: 核心包传统开发模式:基于 html / css / js 文件,直接引入核心包,开发 Vue。工程化开发模式:基于构建工…

ubuntu系统搭建pytorch环境详细步骤【笔记】

实践设备:华硕FX-PRO(NVIDIA GeForce GTX 960M) 搭建PyTorch环境的详细步骤如下: 安装Ubuntu系统: 下载Ubuntu的镜像文件并制作启动盘。将启动盘插入计算机,启动计算机并按照提示安装Ubuntu系统。 配置镜…

Python爬虫--Ajax异步抓取腾讯视频评论

在某些网站 ,当我们滑下去的时候才会显示出后面的内容 就像淘宝一样,滑下去才逐渐显示其他商品 这个就是采用 Ajax 做的 然后我们现在就是要编写这样的爬虫。 规律分析: 这个时候就要用到我们的 Fiddler 了 我们需要分析加载评论的规律 …

Orange3数据可视化(组件概览)

概要 大家见过Orange3提供的丰富数据可视化组件吗? Orange3为您提供了一系列生动的图表工具,包括树图、箱线图、小提琴图、分布图、散点图、折线图、条形图、筛图、马赛克图、自由投影、线性投影、雷达图、热力图、韦恩图、轮廓图、毕达哥拉斯树、毕达哥…

C++ 如何高效的使用 STL 容器?

目录 1.引言 2.容器分类 3.直接将对象、数据写入容器存在哪些问题? 4.对象是如何复制的? 5.复制存在哪些问题? 6.如何避免复制? 7.其它高效应用 7.1.选择合适的容器 7.2.避免不必要的复制 7.3.使用适当的分配器 7.4.利…

编程学习系列(1):计算机发展及应用(1)

前言: 最近我在整理书籍时,发现了一些有关于编程的学习资料,我派蒙也不是个吝啬的人,从今天开始就陆续分享给大家。 计算机发展及应用(1) 1944 年美国数学家冯诺依曼(现代计算机之父&#xff…

鹏哥C语言复习——字符函数与字符串函数

目录 一.字符函数 1.字符分类函数 2.字符转换函数 二.基础字符串函数 1.strlen函数 2.strcpy函数 3.strcat函数 4.strcmp函数 三.基础字符串函数优化 1.strncpy函数 2.strncat函数 3.strncmp函数 四.进阶字符串函数 1.strstr函数 2.strtok函数 3.strerror函数 一…