正则表达式(复习)

server/2025/3/15 1:24:10/

文章目录

    • 一、[]: 一个字符集合
    • 二、{}: 重复次数
    • 三、特殊符号
    • 四、(): 分组
    • 五、python代码示例
    • 六、注意

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

一、[]: 一个字符集合

[] 被称为字符类,用于定义一个字符集合,匹配该集合中任意一个字符。
在方括号内列出所有可能匹配的字符,正则表达式会匹配方括号中任意一个字符。

特殊符号含义
-来表示一个字符范围
^表示排除方括号中指定的字符,例如:[ ^0-9] 非数字
\d[0-9]
\D[^0-9]
\w[a-zA-Z0-9_]
\W[^a-zA-Z0-9_]
\s匹配任意空白字符,包括空格、制表符、换行符等
\S匹配任意非空白字符
\b单词边界,匹配单词的开始或结束位置,例如:\bcat\b匹配独立的单词 cat,而不会匹配 category 中的 cat
\B非单词边界,匹配不在单词开始或结束的位置,例如:\Bing\B 对于 string 中的 ing 会匹配,而对于 sing 则不匹配

二、{}: 重复次数

{} 被称为量词,用于指定前面的元素(字符、字符类或分组)出现的次数。

特殊符号含义
+{1, } 1次以上
*{0,} 0次以上
?{0,1} 0次或1次、注:跟在 *+{} 等后面时,表示非贪婪匹配
.匹配任意一个字符(换行除外)

三、特殊符号

特殊符号含义
^匹配开始的字符串
$匹配结尾的字符串
\转译符,例如:\. 匹配 .\d 匹配任意数字(等价于 [0-9]
|或者。例如:[a|b]

四、(): 分组

  1. 分组,将多个字符组合成一个整体
  2. 创建捕获组,保存匹配内容
  3. 创建非捕获组((?:)
  4. 反向引用(\数字
  1. 分组,将多个字符组合成一个整体
python">import re# 匹配连续出现两次的 "ab"
pattern = r'(ab){2}'
text = 'abababc'
result = re.findall(pattern, text)
print(result) 	 # ['ab']
  1. 创建捕获组,保存匹配内容
python">import re# 匹配日期,格式为 "年-月-日",并捕获年、月、日
pattern = r'(\d{4})-(\d{2})-(\d{2})'
text = 'Today is 2024-10-15.'
result = re.search(pattern, text)
if result:print("Full match:", result.group(0))	# Full match: 2024-10-15print("Year:", result.group(1))			# Year: 2024print("Month:", result.group(2))		# Month: 10print("Day:", result.group(3))			# Day: 15
  1. 创建非捕获组((?:)
python">import re# 使用非捕获组匹配 "abc" 或 "def" 后面跟着一个数字
pattern = r'(?:abc|def)\d'
text = 'abc1 def2 ghi3'
result = re.findall(pattern, text)
print(result) 		# ['abc1', 'def2']
  1. 反向引用(\数字
python">import re# 匹配连续出现两次相同的单词
pattern = r'(\b\w+\b)\s+\1'
text = 'hello hello world'
result = re.findall(pattern, text)
print(result) 		# ['hello']

python_101">五、python代码示例

Python中,使用re模块来实现正则表达式

python">import re
regex = 'a'
string = 'abc'# 1. re.search(regex, string)
# 检查这个字符串string是否匹配正则表达式
if re.search(regex, string) is not None:print(string)	# abc# 2. results = re.findall(regex, string)
# 匹配带正则表达式的那部分字符串
string = '2014 was a good year, but 2025 will be better!'
years = re.findall('[1-2][0-9]{3}', string)
print(years)	# ['2014', '2025']# 3. result.group(0)
# 分组提取,见上面分组

六、注意

正则表达式里使用\作为转义字符

假如你需要匹配文本中的字符\,name编程语言表示的正则表达式需要4个反斜杠\\\\,前两个和后两个分别用于在编程语言中转义成反斜杠,转换成两个反斜杠后再在正则表达式中转义成一个反斜杠。Python中的原生字符串很好的解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示。同样,匹配一个数字的"\\d"可以写成r"\d",不需要再担心是否漏写了反斜杠,写出来的表达式也更直观。

python">import reif re.search("\\\\", "I have one nee\dle") is not None:print("Match")
else:print("Not Match")
python">import reif re.search(r"\\", "I have one nee\dle") is not None:print("Match")
else:print("Not Match")

http://www.ppmy.cn/server/175024.html

相关文章

计算机操作系统(一) 什么是操作系统

计算机操作系统(一) 什么是操作系统 前言一、什么是操作系统二、操作系统的作用三、推动操作系统发展的主要动力总结(核心概念速记): 前言 当你打开电脑、点击应用、播放音乐时,是谁在背后默默协调这一切&…

css实现标题跑马灯效果

css实现标题跑马灯效果 <div class"topBar"><span class"scrolling-text">滚动字幕</span></div>keyframes marquee {0% {transform: translateX(300%);}100% {transform: translateX(-300%);} }.topBar {width:100%;height: 45px…

系统架构设计师-第6章 系统配置与性能评价

【本章学习建议】 根据考试大纲&#xff0c;本章主要考查系统架构设计师单选题&#xff0c;预计考1分左右&#xff0c;对应第二版教材2.9节&#xff0c;内容较少&#xff0c;较为简单&#xff0c;容易拿分。 6.1 性能指标 1. 计算机的性能指标 对计算机评价的主要性能指标有…

Spring MVC中的Controller加载控制与Bean加载控制详解

Spring MVC默认通过父子容器实现Web层与非Web组件的隔离。但在实际项目中&#xff0c;若未明确控制组件的扫描路径与加载规则&#xff0c;表现层的Controller、业务层的Service与数据层的Repository往往会被“一刀切”地扫描到同一上下文中。例如&#xff0c;业务层的Service被…

RocketMQ开发实战篇

一、生产者开发指南 1. Java API使用详解 在使用RocketMQ进行消息生产时&#xff0c;首先需要引入相关的依赖。在Maven项目中&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>org.apache.rocketmq</groupId><artifactI…

PHP与数据库连接常见问题及解决办法

PHP与数据库连接常见问题及解决办法 在现代Web开发中&#xff0c;PHP与数据库的连接是不可或缺的一部分。无论是构建动态网站、内容管理系统&#xff08;CMS&#xff09;还是电子商务平台&#xff0c;PHP与数据库的交互都是核心功能之一。然而&#xff0c;在实际开发过程中&am…

Linux调度器 --- 负载均衡的存在的问题

文章目录 前言一、简介二、Linux 调度器2.1 在单核系统上&#xff0c;CFS 非常简单2.2 在多核系统上&#xff0c;CFS 变得非常复杂2.2.1 负载均衡算法2.2.2 优化措施 三、Linux调度器负载均衡的存在的问题3.1 组负载不均衡问题&#xff08;Group Imbalance Bug&#xff09;3.2 …

Spring Boot启动流程及源码实现深度解析

Spring Boot启动流程及源码实现深度解析 一、启动流程概述 Spring Boot的启动流程围绕SpringApplication类展开&#xff0c;核心流程可分为以下几个阶段&#xff1a; 初始化阶段&#xff1a;推断应用类型&#xff0c;加载ApplicationContextInitializer和ApplicationListene…