正则表达式

一、模糊查找与精确查找的区别

python 复制代码
s="123 jdjslk 89"
#找出确定的数字1,这就是精确查找
print(s.find("1"))
#凡是数字都要找出来,但不确定具体是什么数字,这就是模糊查找
import re
print(re.findall('\d+',s))

二、match用法

python 复制代码
'''
match函数:
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:re.match(pattern, string, flags=0)

'''
# !/usr/bin/python

import re

print(re.match('www', 'WwW.runoob.com',re.I).span())  # 在起始位置匹配
print(re.match('com', 'www.runoob.com'))  # 不在起始位置匹配

三、search

python 复制代码
'''
search函数:
扫描整个字符串并返回第一个成功的匹配。
函数语法:re.search(pattern, string, flags=0)

'''
# !/usr/bin/python3

import re
print(type(re.search('www', 'www.runoob.com')))
print(re.search('www', 'www.runoob.com').span())  # 在起始位置匹配
print(re.search('com', 'www.runoob.com').span())  # 不在起始位置匹配

四、compile

python 复制代码
import re
pattern = re.compile(r'\d+')                    # 用于匹配至少一个数字
m = pattern.match('one12twothree34four')        # 查找头部,没有匹配
print( m )
m = pattern.match('one12twothree34four', 2, 10) # 从'e'的位置开始匹配,没有匹配
print( m )

m = pattern.match('one12twothree34four', 3, 10) # 从'1'的位置开始匹配,正好匹配
print( m )                                        # 返回一个 Match 对象
# <_sre.SRE_Match object at 0x10a42aac0>
print(m.group(0))   # 可省略 0
# '12'
print(m.start(0))  # 可省略 0
# 3
print(m.end(0))     # 可省略 0
# 5
print(m.span(0))    # 可省略 0
# (3, 5)

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)

finditer

python 复制代码
import re

it = re.finditer(r"\d+", "12a32bc43jf3")
for match in it:
    print(match.group())

sub

python 复制代码
#!/usr/bin/python3
import re

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

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

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

split

python 复制代码
import re
a = "123 456 789".split(" ")
print(a)
res=re.split(r'\W+', 'runoob, runoob, runoob.')
print(res)
# ['runoob', 'runoob', 'runoob', '']
# >> > re.split('(\W+)', ' runoob, runoob, runoob.')
# ['', ' ', 'runoob', ', ', 'runoob', ', ', 'runoob', '.', '']
# >> > re.split('\W+', ' runoob, runoob, runoob.', 1)
# ['', 'runoob, runoob, runoob.']
#
# >> > re.split('a*', 'hello world')  # 对于一个找不到匹配的字符串而言,split 不会对其作出分割
# ['hello world']

匹配汉字

python 复制代码
import re
# 待匹配的字符串
title = "你好,hello,世界"
# 创建正则表达式,用于只匹配中文
pattern = re.compile(r"[\u4e00-\u9fa5]+")
#检索整个字符串,将匹配的中文放到列表中
result=pattern.findall(title)
print(result)

不同的pattern

相关推荐
“AI国潮设计-小江”3 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
wenwen_chao4 小时前
Python学习与开发资源合集:实用技巧与工具推荐
python
for_ever_love__5 小时前
函数——参数、lambda、*args与作用域
python·函数·大模型开发·编程基础
东莞市云毅网络有限公司5 小时前
企业资料时效性判定:Last-Modified、正文日期与版本字段三路交叉
python·sqlite·自动化运维·geo·数据监测
Query*5 小时前
深入浅出LangGraph【一】_基础篇
python·ai·langchain
XiaoMaqqqq5 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
ShyanZh6 小时前
【Python3基础】19-Socket 与 TCP、UDP 编程
python·网络协议·tcp/ip·udp
惊讶的猫7 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
天赐范式7 小时前
天赐范式第186天:让方差开始自洽——Bulmer效应的闭式验证
python·数字生命·天赐范式·动态运行时·遗传方差·bulmer效应
泡茶喝茶写代码7 小时前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据