python的正则表达式

文章目录

正则表达式

Python 的正则表达式(Regular Expression)功能非常强大,它允许你进行复杂的字符串匹配和查找。Python 中使用正则表达式的标准库是 re。

基本使用

下面是一些基本的使用方式:

匹配字符串

python 复制代码
import re

pattern = "abc"
text = "abcdef abcdef"

match = re.search(pattern, text)

if match:
    print("找到匹配:", match.group())
else:
    print("没有找到匹配")

查找所有匹配

python 复制代码
import re

pattern = "abc"
text = "abcdef abcdef abcdef"

matches = re.findall(pattern, text)

print("找到所有匹配:", matches)

替换字符串

python 复制代码
import re

pattern = "abc"
replace_with = "xyz"
text = "abcdef abcdef abcdef"

new_text = re.sub(pattern, replace_with, text)

print("替换后的文本:", new_text)

元字符

正则表达式包含一些特殊字符(称为元字符),它们具有特殊的含义:

  • . : 匹配除换行符以外的任意字符
  • ^ : 匹配字符串的开头
  • $ : 匹配字符串的末尾
    • : 匹配前面的子表达式零次或多次
    • : 匹配前面的子表达式一次或多次
  • ? : 匹配前面的子表达式零次或一次
  • {m,n} : 匹配前面的子表达式至少 m 次且最多 n 次

字符集

  • ... : 匹配字符集内的任意一个字符
  • \^... : 匹配不在括号内的任意字符
  • \d : 匹配一个数字字符,等价于 0-9
  • \D : 匹配一个非数字字符,等价于 \^0-9
  • \w : 匹配包括下划线的任何单词字符,等价于 A-Za-z0-9_
  • \W : 匹配任何非单词字符,等价于 \^A-Za-z0-9_
  • \s : 匹配任何空白字符,包括空格、制表符、换页符等等,等价于 \\f\\n\\r\\t\\v
  • \S : 匹配任何非空白字符,等价于 \^ \\f\\n\\r\\t\\v

分组和引用

  • (...) : 匹配括号内的表达式,也表示一个组
  • \number : 引用编号为 number 的组匹配到的文本

re.match函数

函数原型

python 复制代码
re.match(pattern, string, flags=0)
  • pattern: 正则表达式的模式字符串。
  • string: 要匹配的字符串。
  • flags: 可选参数,用于修改正则表达式的匹配方式,如忽略大小写、多行模式等。可能的值包括:
    • re.I: 忽略大小写
    • re.M: 多行模式
    • re.S: 使.匹配包括换行符在内的所有字符
    • re.X: 允许使用空格和#注释正则表达式

示例

python 复制代码
import re

# 匹配字符串开头的 "Hello"
pattern = "Hello"
string = "Hello, world!"

match = re.match(pattern, string)

if match:
    print("找到匹配:", match.group())
else:
    print("没有找到匹配")

输出将是:

python 复制代码
找到匹配: Hello

如果尝试匹配的字符串不是以"Hello"开头,re.match()将返回None。

python 复制代码
string = "Hi, world!"
match = re.match(pattern, string)

if match:
    print("找到匹配:", match.group())
else:
    print("没有找到匹配")

输出将是:

python 复制代码
没有找到匹配

注意事项

  • re.match()只匹配字符串的开始部分,如果模式出现在字符串的中间或结尾,它将不会匹配。
  • 如果你想检查整个字符串是否与模式匹配,可以使用re.fullmatch()。
  • 如果你想查找字符串中的所有匹配项,可以使用re.findall()或re.finditer()。
相关推荐
惊讶的猫3 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
天赐范式3 小时前
天赐范式第186天:让方差开始自洽——Bulmer效应的闭式验证
python·数字生命·天赐范式·动态运行时·遗传方差·bulmer效应
泡茶喝茶写代码4 小时前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据
Είναι η κοπέλα4 小时前
显存计算与模型选择:你的显卡能跑多大的模型
人工智能·pytorch·python·开源·conda
ROSF68684 小时前
2026 仿石漆乳液供应商:市场布局与行业发展态势梳理
大数据·人工智能·python
青少儿编程课堂5 小时前
AC自动机多模式串匹配精讲:校园关键词巡检实战解析
c++·python·算法·bfs·信息学竞赛
hhzz5 小时前
【YOLO 入门到精通 04】理解任务与模型家族:7 大 CV 任务与 YOLO26 选型指南
人工智能·python·深度学习·yolo·计算机视觉
Escalating_xu5 小时前
【Python】使用库:标准库、第三方库、pip、项目实战与程序打包
java·python·pip
水獭比特5 小时前
Agent 工具审批不止一个按钮:用 v0.22.1 复盘入口、恢复和副作用
人工智能·python
苦瓜打怪兽5 小时前
leetcode 热题100(11. 盛最多水的容器)
python·算法·leetcode