[Python进阶] Python中使用正则表达式

8.4 Python中使用正则表达式

在Python中,我们使用re模块来使用正则表达式。以下是一些基本的使用方法:

首先,你需要导入re模块:

import re

8.4.2 re模块简单示例

8.4.2.1 查找字符串

使用re模块的search()方法可以在一个字符串中查找匹配正则表达式的部分。例如,下面的代码将查找字符串中的"abc":

py 复制代码
import re  
  
string = "Hello, abc world!"  
match = re.search("abc", string)  
  
if match:  
    print("Found match: ", match.group())  
else:  
    print("No match found.")

Found match: abc

8.4.2.2 匹配字符串

如果你想检查一个字符串是否完全符合一个正则表达式,你可以使用match()方法。例如,下面的代码将检查字符串是否以"abc"开头:

py 复制代码
import re  
  
string = "abc world!"  
match = re.match("abc", string)  
  
if match:  
    print("Match found: ", match.group())  
else:  
print("No match found.")

Match found: abc

注意,match()方法只检查字符串的开始部分是否符合正则表达式,如果你想检查整个字符串是否符合,你应该使用fullmatch()方法。

8.4.2.3 替换字符串

如果你想在字符串中查找并替换匹配正则表达式的部分,你可以使用sub()方法。例如,下面的代码将在字符串中查找所有的"abc"并替换为"xyz":

py 复制代码
import re  
  
string = "Hello, abc world! abc"  
new_string = re.sub("abc", "xyz", string)  
print(new_string)

Hello, xyz world! xyz

以上就是Python中使用正则表达式查找和匹配字符串的基本方法。

8.4.3 re模块函数详解

8.4.3.1 re.match:从头查找

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:

re.match(pattern, string, flags=0)
参数说明:

| 参数 | 描述 |

|---------|--------------------|

| pattern | 匹配的正则表达式 |

| string | 要匹配的字符串 |

| flags | 标志位,用于控制正则表达式的匹配方式 |
标志位:

| 修饰符 | 描述 |

|---|---|

| re.I | 使匹配对大小写不敏感 |

| re.L | 做本地化识别(locale-aware)匹配 |

| re.M | 多行匹配,影响 ^ 和 $ |

| re.S | 使 . 匹配包括换行在内的所有字符 |

| re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. |

| re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |

匹配成功re.match方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配结果对象方法

匹配对象方法 描述
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
span() 返回匹配结果所在的位置
8.4.3.2 re.search:查找全部

re.search 扫描整个字符串并返回第一个成功的匹配。
函数语法:

re.search(pattern, string, flags=0)
参数说明:

| 参数 | 描述 |

|---|---|

| pattern | 匹配的正则表达式 |

| string | 要匹配的字符串。 |

| flags | 标志位,用于控制正则表达式的匹配方式 |

匹配成功re.search方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

8.4.3.3 re.sub:检索并替换

语法:

re.sub(pattern, repl, string, count=0, flags=0)
参数:

| 参数名 | 说明 |

|---|---|

| pattern | 正则中的模式字符串。 |

| repl | 替换的字符串,也可为一个函数。 |

| string | 要被查找替换的原始字符串。 |

| count | 模式匹配后替换的最大次数,默认0表示替换所有的匹配。 |

| flags | 编译时用的匹配模式,数字形式。 |

8.4.3.4 re.findall

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。
语法:

re.findall(pattern, string, flags=0)

pattern.findall(string, pos\[, endpos])
参数:

| 参数名 | 说明 |

|---|---|

| pattern | 匹配模式。 |

| string | 待匹配的字符串。 |

| pos | 可选参数,指定字符串的起始位置,默认为0。 |

| endpos | 可选参数,指定字符串的结束位置,默认为字符串的长度。 |

8.4.3.5 re.finditer

和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
语法:

re.finditer(pattern, string, flags=0)

**`参数:

| 参数 | 描述 |

|---|---|

| pattern | 匹配的正则表达式 |

| string | 要匹配的字符串。 |

| flags | 标志位,用于控制正则表达式的匹配方式 |

8.4.3.6 re.split

split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:

re.split(pattern, string, maxsplit=0, flags=0)
参数:

| 参数 | 描述 |

|---|---|

| pattern | 匹配的正则表达式 |

| string | 要匹配的字符串。 |

| maxsplit | 分割次数,maxsplit=1 分割一次,默认为 0,不限制次数。 |

| flags | 标志位,用于控制正则表达式的匹配方式 |

相关推荐
love530love7 小时前
OpenClaw Windows Companion 桌面客户端 连接 LM Studio 完整配置指南
人工智能·windows·python·openclaw
cui_ruicheng8 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
_Jimmy_10 小时前
FastAPI + SQLAlchemy全局事务管理
python·fastapi
用户83562907805110 小时前
如何使用 Python 在 Excel 中添加、编辑和删除超链接
后端·python
AC赳赳老秦12 小时前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw
FoldWinCard13 小时前
D6 Python 基础语法 --- 保留关键字
开发语言·python
暮暮祈安13 小时前
Celery 新手入门指南
java·数据库·python·flask·httpx
JustNow_Man13 小时前
每日高频场景英文口语
python
风吹心凉14 小时前
python3基础2026.7.22
开发语言·python
小猴子爱上树15 小时前
一站式解决图片视频翻译难题的高效AI工具
人工智能·python·音视频