正则表达式学习笔记(一)

本文介绍了正则表达式的基本概念,强调它不仅仅是一个字符串,还详细讲解了正则表达式中的常见符号,如`.`、`*`、`+`、`{m,n}`、`|`、`?`、`[]`、`$`、`^`、`d`、``、`s`、`w`等,并提到了转义符在字符串和正则表达式中的应用。此外,文章还讨论了贪婪与非贪婪匹配的区别,解释了如何通过`?`实现非贪婪模式。" 106241702,9339129,Spring Boot中MyBatis的使用与SQL相关类解析,"['Java', 'Spring Boot', 'MyBatis', 'ORM', '数据库集成']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是正则表达式

       在进行文本处理的时候,我们经常需要根据自己的需求提取某些特定的字符串,因而我们需要给计算机提供匹配模板,而这个模板就是正则表达式。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

       大部分时候我们见到的正则表达式都是以字符串的形式展现,如"w+\\.baidu\\.com",以至于我曾认为正则表达式就是一个字符串。但其实这只是为了方便人们使用,以Python语言的re模块为例: re.match("p","python") ,字符串"p"会在内部先转换为正则表达式对象(Pattern),然后再与字符串"python"进行匹配,需要注意的是正则表达式匹配的是整个字符串,而不是进行包含匹配,所以尽管"python"匹配到了第一个字符p,但由于后面还有字符,故匹配失败返回False。为了简化使用,大部分的需要用到正则表达式的函数(split、replace),都不需要程序员自己先去定义一个Pattern对象(Pattern对象自己也有许多方法,高效匹配),而只需将正则表达式字符串作为参数传递给函数就可以了,字符串转正则表达式对象的过程在函数内部完成。所以,正则表达式不是字符串

 二、常见正则表达式符号

        .             通配符,匹配任何一个字符

           *            允许模式重复0次或多次

         +            允许模式重复一次或多次(至少重复一次

         {m,n}      允许模式重复m~n次

          |              选择符,选择匹配其中的一个,如'p(ython|erl)'

                     重复前面的内容0次或一次

          []            字符集,可以匹配字符集里面的任意一个字符,如[^a-z]  

          $            匹配字符串的结束位置

         ^             匹配字符串的开始位置

         \d            匹配一个数字字符(0~9),\D表示非数字(通常大小写意义相反)

         \b            匹配一个单词边界,如"s\b"可以匹配"thanks"中的"s"而不能匹配"ask"中的"s"

         \s            匹配任何一个非空白字符

       \w            匹配包括任何一个包括下划线的单词字符,等价于[a-zA-Z0-9_]


三、关于转义符

     在ASCII字符集中,有一些字符并不能直接显示,如换行符、回车符、制表符等,因而在字符串中,我们需要借助反斜杠"\"加字母的形式来显示告诉人们此处是一个什么字符,即字符串转义符。然而,正则表达式某些字符也有其特殊含义,如”.“就是匹配任意一个字符,如果我们想匹配的就是符号"."呢?我们就需要借助正则表达式转义符了,以书写匹配网址的正则表达式为例:


首先我们需要根据要匹配的内容写出正则表达式,由于里面包含有正则表达式的特殊字符通配符.,它意味着此处可以匹配任意一个字符,而实际我们只是想匹配一个符号.,所以我们需要借助正则表达式转义符对其进行转义\. ,这样我们就的得到了我们想要的正则表达式。接着我们再将正则表达式转换为字符串,由于www\.(.+)\.com包含有对于字符串来说具有特殊意义的字符"\",我们怎么能区分这是符号”\“还是转义符”\”,所以我们需要在"\"前面再加上一个字符串转义符“\\”。总之,字符串和正则表达式都有转义符,在书写正则表达式字符串一定要区分清楚。

四、贪婪与非贪婪

对于上面的正则表达式,如果我们想用来字符串做替换,比如我们想替换"www.first.comwww.second.com"中的www.second.com和www.second.com


可以看到,整个字符串被直接替代了,只输出了一个‘$’,而不是分别替换。原因在于正则表达式中的重复运算符+默认是贪婪的,它会进行尽可能多的匹配。如果想分别替换,只需要在重复运算符后面加上?,这样它就会进行尽可能少的匹配,即非贪婪模式。


电动汽车数据集:2025年3K+记录 真实电动汽车数据:特斯拉、宝马、日产车型,含2025年电池规格和销售数据 关于数据集 电动汽车数据集 这个合成数据集包含许多品牌和年份的电动汽车和插电式车型的记录,捕捉技术规格、性能、定价、制造来源、销售和安全相关属性。每行代表由vehicle_ID标识的唯车辆列表。 关键特性 覆盖范围:全球制造商和车型组合,包括纯电动汽车和插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准和速度、价格、产地、自主水平、排放、安全等级、销售和保修。 时间跨度:模型跨度多年(包括传统和即将推出的)。 数据质量说明: 某些行可能缺少某些字段(空白)。 几个分类字段包含不同的、特定于供应商的值(例如,Charging_Type、Battery_Type)。 各列中的单位混合在起;注意kWh、km、hr、USD、g/km和额定值。 列 列类型描述示例 Vehicle_ID整数每个车辆记录的唯标识符。1 制造商分类汽车品牌或OEM。特斯拉 型号类别特定型号名称/变体。型号Y 与记录关联的年份整数模型。2024 电池_类型分类使用的电池化学/技术。磷酸铁锂 Battery_Capacity_kWh浮充电池标称容量,单位为千瓦时。75.0 Range_km整数表示充满电后的行驶里程(公里)。505 充电类型主要充电接口或功能。CCS、NACS、CHAdeMO、DCFC、V2G、V2H、V2L Charge_Time_hr浮动充电的大致时间(小时),上下文因充电方法而异。7.5 价格_USD浮动参考车辆价格(美元).85000.00 颜色类别主要外观颜色或饰面。午夜黑 制造国_制造类别车辆制造/组装的国家。美国 Autonomous_Level浮点自动化能力级别(例如0-5),可能包括子级别的小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值