python 正则表达式

re.match 在起始位置开始匹配

python 复制代码
# 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配

# re.match() 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话

import re

hh=re.match('我爱你','我爱你-我爱你')  # 在起始位置匹配
print(hh)
hh=re.match('-','我爱你-我爱你')  #不在起始位置匹配,找不到
print(hh)

line = "Cats are smarter than dogs"
# .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符
# (.*?) 表示"非贪婪"模式,只保存第一个匹配到的子串
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

print(matchObj)
print(matchObj.group(1))  #gropu()表示返回匹配的第几个字符串

re.search 扫描整个字符串

python 复制代码
import re

# re.search 扫描整个字符串并返回第一个成功的匹配
# re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回 None,而 re.search 匹配整个字符串,直到找到一个匹配

hh=re.search('我爱你','我爱你-我爱你')  # 在起始位置匹配
print(hh)
hh=re.search('-','我爱你-我爱你')  #不在起始位置匹配,找不到
print(hh)
print(hh.span())
print(hh.group())

检索并且替换

python 复制代码
# re模块提供了re.sub用于替换字符串中的匹配项

import re

phone = "2004-959-559 # 这是一个电话号码"

# 删除注释
num = re.sub(r'#.*$', "", phone)
print("电话号码 : ", num)

# 移除非数字的内容
num = re.sub(r'\D', "", phone)
print("电话号码 : ", num)

findall查找所有匹配的字符子串

python 复制代码
import re

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


result1 = re.findall(r'\d+', 'runoob 123 google 456')

pattern = re.compile(r'\d+')  # 查找数字
result2 = pattern.findall('runoob 123 google 456')
result3 = pattern.findall('run88oob123google456', 0, 10)

print(result1)
print(result2)
print(result3)
相关推荐
徐子童20 小时前
网络协议---TCP协议
网络·网络协议·tcp/ip·面试题·1024程序员节
扫地的小何尚2 天前
NVIDIA RTX PC开源AI工具升级:加速LLM和扩散模型的性能革命
人工智能·python·算法·开源·nvidia·1024程序员节
数据皮皮侠AI3 天前
上市公司股票名称相似度(1990-2025)
大数据·人工智能·笔记·区块链·能源·1024程序员节
开开心心就好4 天前
系统清理工具清理缓存日志,启动卸载管理
linux·运维·服务器·神经网络·cnn·pdf·1024程序员节
Evan东少6 天前
[踩坑]笔记本Ubuntu20.04+NvidiaRTX5060驱动+cuda+Pytorch+ROS/Python实现人脸追踪(环境准备)
1024程序员节
不爱编程的小陈8 天前
C/C++每日面试题
面试·职场和发展·1024程序员节
开开心心就好8 天前
右键菜单管理工具,添加程序自定义名称位置
linux·运维·服务器·ci/cd·docker·pdf·1024程序员节
码农三叔9 天前
(4-2-05)Python SDK仓库:MCP服务器端(5)Streamable HTTP传输+Streamable HTTP传输
开发语言·python·http·大模型·1024程序员节·mcp·mcp sdk
西幻凌云13 天前
初始——正则表达式
c++·正则表达式·1024程序员节
启芯硬件13 天前
电源XL6009E1的dieshot细节分析-芯片设计干货
大数据·经验分享·硬件工程·1024程序员节