九、正则表达式详解:掌握强大的文本处理工具(一)

news2024/11/28 10:51:08

文章目录

  • 🍀引言
  • 🍀正则表达式的基本语法
  • 🍀常用操作符
  • 🍀实例应用
  • 🍀具体操作演示

🍀引言

正则表达式(Regular Expression)是一种强大的文本处理工具,常用于搜索、匹配和替换操作。它使用一种特定的语法来描述文本模式,并可应用于多种编程语言和文本编辑器中。本博客将详细介绍正则表达式的基本语法、常用操作符和实例应用,帮助你掌握这一强大工具。

其实大体来说就是使用表达式将符合条件的字符串进行提取
希望我们能从易到难,从语法到实践的思路去学习,把它攻下来


🍀正则表达式的基本语法

正则表达式由普通字符和特殊字符构成。常见的特殊字符包括元字符、字符类和重复限定符。以下是一些常用的特殊字符:

  • 元字符:用于匹配特定的字符或字符集合,如==.(点)==匹配任意单个字符,\d匹配任意数字等。
  • 字符类:用于匹配一组字符中的任意一个字符,如[abc]匹配字符’a’、‘b’或’c’。
  • 重复限定符:用于指定匹配的次数,如*表示匹配零次或多次,+表示匹配一次或多次等。
    基本语法的了解是学习正则表达式的第一步,它为后续的高级应用打下了基础。

🍀常用操作符

正则表达式中常用的操作符包括:

  • 匹配操作符:^表示匹配字符串开头,$表示匹配字符串结尾。
  • 选择操作符:|表示或操作,用于在多个模式之间选择一个。
  • 分组操作符:()用于将一组模式组合为一个整体,并可对其进行操作,如获取匹配结果、进行重复操作等。

这些操作符的灵活运用,可以实现更复杂的字符串匹配和替换需求


🍀实例应用

正则表达式的应用非常广泛,以下是一些常见场景的实例应用:

  • 邮箱验证:使用正则表达式来验证用户输入的邮箱是否符合规范,如是否包含@符号和顶级域名。
  • URL提取:从一段文本中提取出所有的URL链接,可以使用正则表达式匹配特定的URL模式。
  • 数据清洗:处理文本中的特殊字符、空白符或不规范的格式,使用正则表达式进行替换或删除操作。
  • 日志分析:通过正则表达式匹配特定的日志模式,提取出关键信息,如时间戳、错误代码等。

正则表达式在数据处理、文本搜索和日志分析等领域发挥着重要作用,掌握它将使你的工作更高效、准确。

🍀具体操作演示

  1. 匹配某个字符串:match()
import re

text = 'Hello Word'
result = re.match('H', text)
print(result)

这样输出的结果是一个对象

在这里插入图片描述
只有使用group()方法,才可以将其打印

print(result.group())

在这里插入图片描述
这时如果我们将表达式改一下,那么会打印出结果么

import re

text = 'Hello Word'
result = re.match('H0', text)
print(result.group())

显而易见会报错
在这里插入图片描述

注意:match()是从起始位置进行匹配的

  1. 点(.)

下面进行一些例子演示

import re

text = '1Hello Word'
text1 = '_Hello Word'
text2= '\nHello Word'
result = re.match('.', text)
result1 = re.match('.', text1)
result2 = re.match('.', text2)
print(result.group())
print("*"*10)
print(result1.group())
print("*"*10)
print(result2.group())

运行结果如下
在这里插入图片描述
注意:无法匹配换行符、从起始位置开始匹配

  1. \d匹配任意某个数字
import re

text = '1Hello Word'
text1 = 'Hello8 Word'
text2= 'Hello Word'
result = re.match('\d', text)
result1 = re.match('\d', text1)
result2 = re.match('\d', text2)
print(result.group())
print("*"*10)
print(result1.group())
print("*"*10)
print(result2.group())

运行结果如下
在这里插入图片描述
注意:只能匹配数字、从起始位置开始

  1. \D:除数字外均可匹配
import re

text = '_Hello Word'
text1 = '8Hello Word'
result = re.match('\D', text)
result1 = re.match('\D', text1)
print(result.group())
print(result1.group())

运行结果如下

在这里插入图片描述
注意:除了数字以外的内容均可以匹配、从起始位置开始
\d和\D可以认为是互补的关系

  1. \s(小写):匹配空白字符
import re

text = '\nHello Word'
result = re.match('\s', text)
print(result.group(),len(result.group()))

运行结果如下

在这里插入图片描述
注意:匹配空白字符、从起始位置开始、\n、\t、\r、空格

  1. \w(小写):匹配小写的a-z,大写的A-Z,数字和下划线
import re

text = '\nHello Word'
text1 = 'Hello Word'
result = re.match('\w', text)
result1 = re.match('\w', text1)
print(result1.group())
print(result.group())

运行结果如下
在这里插入图片描述
注意:匹配小写的a-z,大写的A-Z,数字和下划线,从起始位置开始,除去上述的都无法匹配(如中文,中文符号等)

  1. \W:匹配除小写\w之外的所有字符
import re

text = '#Hello Word'
text1 = 'Hello Word'
result = re.match('\W', text)
result1 = re.match('\W', text1)
print(result.group())
print(result1.group())

运行结果如下
在这里插入图片描述

注意:匹配\w以后的所有字符
\w和\W可以认为是互补的

  1. [ ]:->>组合的方式,只要在中括号内的内容均可匹配
import re

text = '#Hello Word'
text1 = 'Hello Word'
result = re.match('[#]', text)
result1 = re.match('[el]', text1)
print(result.group())
print(result1.group())

运行结果如下
在这里插入图片描述
注意:[]内的内容都可以匹配、[]内多个匹配内容时,取“或”,只要匹配对象中年含有其中一个内容就匹配、从起始位置开始

下节继续!

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

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

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

相关文章

jenkins Transferred 0 file(s)问题

每次构建都都是成功,但是就没有就是没有传输过去文件 Transferred 0 file(s) 因为jenkins是容器启动,会考虑有没有可能是从容器ssh传输呢? (如果不是容器启动得,就把源文件地址改成 相对路径就行) 我就在容…

17.matlab数据分析多项式的积分(matlab程序)

1.简述 Matlab中对多项式进行积分 (1)多项式的微分操作由polyder函数实现 (2)MATLAB中没有专门的对多项式积分函数,但可以用[p./length(p):1:-1]的方法完成积分,k为常数 2.代码 clc; clear all; p1[2 6 8];…

​ jgliu的​博客推荐 rapidIO/DDR/SPI/I2C

在博客园中发现一位博主的文章质量比较高 作者: jgliu 这里贴几篇感兴趣的文章地址 1.rapidIO从基础到原理到实现都有很详细的介绍,虽然该高速接口在FPGA中用的较多,ASIC不常用,但通过rapidIO的学习 可以加深对高速接口的理解-…

二十四章:SEgmentation TRansformer (SETR)——以Transformer的序列到序列的视角重新思考语义分割问题

0.摘要 最近的语义分割方法采用了全卷积网络(FCN)和编码器解码器架构。编码器逐渐降低空间分辨率,并学习具有更大感受野的抽象/语义视觉概念。由于上下文建模对于分割是至关重要的,最新的研究工作将重点放在增加感受野上&#xff…

hadoop的分区学习

自定义分区实现: 抽象类 要自定义分区规则,就必须继承并且重写。 设置分区数量 driver类: job.setNumReduceTasks(3);job.setPartitionerClass(FlowPartitioner.class);分区方法类,直接用编号代替就好了 public class FlowParti…

二叉树详解

这里写目录标题 前言树型结构(了解)树常见的概念树的表示形式(了解)树的应用 二叉树概念两种特殊的二叉树二叉树的性质(重要)二叉树的存储二叉树的基本操作 前言 本篇博客讲述了以下几个知识点 树的基本概念二叉树概念及特性二叉树的基本操作 树型结构…

OpenCv之特征检测

目录 一、基本概念 二、harris角点检测 三、SIFT算法 四、Shi-Tomasi角点检测 一、基本概念 特征检测指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征检测的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、…

FPGA简单双端口RAM——IP核

文章目录 前言一、双端口 RAM1、简单双端口与真双端口2、简单双端口RAM框图 二、 IP核配置1、RAM双端口 IP 核配置2、PLL IP 核配置 三、源码1、ram_wr(写模块)2、ram_rd(读模块)3、ip_2port_ram(顶层文件) 四、仿真1、仿真文件2、波形仿真 五、SignalTap II在线验证六、总结七…

百度知道上云与架构演进

作者 | 百度知道研发组 导读 百度知道作为上线十多年的老产品线,业务场景多、架构老旧、代码风格不统一,同时业务迭代较快,整体承载流量大,稳定性要求高,给业务全面上云带来不小的挑战。本文基于实践,介绍知…

Nginx配置访问密码

使用得场景 因为想将skywalking对外提供访问,但是skywalking又没有认证功能,所以使用nginx来做。 安装htpasswd 因为需要使用到htpasswd,htpasswd是Apache服务器中生成用户认证的一个工具,如果未安装,则使用如下命令…

Linux底层

一. arm基础知识 基础:c语言 具有一定硬件基础 特点---》前后联系 arm目标: 看懂简单的汇编代码 会看电路图、芯片手册 学会如何用软件控制硬件思想 解决问题的办法 谈谈对嵌入式的理解? 以计算应用为中心,软硬件可裁剪的…

Vue 双重v-for渲染表单,再复制表单编辑之深拷贝

文章目录 前言问题背景实现拷贝表单如何实现深拷贝Object.assignJSON实现的深拷贝递归实现解决循环引用的递归实现require(lodash).cloneDeep() 前言 在做复杂的动态表单,实现业务动态变动,比如有一条需要动态添加的el-form-item中包含了多个输入框&…

Tomcat服务器下载安装及配置教程(IDEA中使用Tomcat)

目录 友情提醒第一章、Tomcat下载与安装1.1)Tomcat介绍1.2)官网下载 第二章、Tomcat配置环境变量2.1)windows环境变量配置2.2)验证Tomcat配置是否成功2.3)报错解决 第三章、IDEA整合Tomcat3.1)打开IDEA开发…

【OAuth2】OAuth2概述及使用GitHub登录第三方网站

【OAuth2】OAuth2概述及使用GitHub登录第三方网站 文章目录 【OAuth2】OAuth2概述及使用GitHub登录第三方网站0. 导言1. OAuth2 简介2. OAuth2 认证授权总体流程3. OAuth2 标准接口4. OAuth2 四种授权模式4.1 授权码模式4.2 简化模式4.3 密码模式4.4 客户端模式 5. GitHub授权登…

2023河南萌新联赛第一场(河南农业大学)

目录 A.你也喜欢数学吗​编辑 E.动物朋友 F.松鼠排序 G.Reverse J.合唱比赛 K.以撒和隐藏房间 L.中位数 A.你也喜欢数学吗 输入描述 第一行一个正整数k(1<k<1e12) 输出描述 输出一行一个整数表示答案 示例1 输入 1 输出 1 示例2 输入 3 输出 10 思路 是等于,将整个…

【itext7】itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格

这篇文章&#xff0c;主要介绍itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格。 目录 一、itext7操作PDF内容 1.1、添加段落文本内容 1.2、添加列表内容 1.3、添加图片 1.4、添加表格 &#xff08;1&#xff09;列宽采用点单位&#…

MySQL之索引(入门级讲解)

目录 一.索引的概念 1.1索引的简介 1.2.索引的优缺点 二.MySQL索引语法 2.1查看索引 2.2创建索引 2.2.1 创建表时创建索引 2.2.2存在的表上创建索引 2.3删除索引 三.索引的数据结构 3.1Btree索引 3.2Hash索引 3.4Hash索引和Btree索引的对比 &#x1f381;个…

基于Kitti数据集的智能驾驶目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于Kitti数据集的智能驾驶目标检测系统可用于日常生活中检测与定位行人&#xff08;Pedestrian&#xff09;、面包车&#xff08;Van&#xff09;、坐着的人&#xff08;Person Sitting&#xff09;、汽车&#xff08;Car&#xff09;、卡车&#xff08;Truck…

[2023新教程]M2 Mac安装Anaconda和Pytorch

本文首发于我的学习之路&#xff1a;https://liguang.wang/index.php/archives/80/ 1 背景 最近使用起了Mac Mini&#xff0c;需要安装Anaconda和Pytorch。网上的教程非常老旧&#xff0c;可读性较差&#xff0c;于是记录下自己的安装过程&#xff0c;分享给大家。 2 详细过…

二十三章:Gated-SCNN:Gated Shape CNNs for Semantic Segmentation ——用于语义分割的门控形状卷积神经网络

0.摘要 当前图像分割的最先进方法通过一个密集的图像表示来处理颜色、形状和纹理信息&#xff0c;这些信息都在深度卷积神经网络内部进行处理。然而&#xff0c;这种方法可能不太理想&#xff0c;因为它们包含了与识别相关的非常不同类型的信息。在这里&#xff0c;我们提出了一…