re.finditer方法和groups() group() groupdict()

  

复制代码
p='''bottle\r\nbag\r\nbig\napple'''
import re
regex=re.compile(r'\bb(?P<middle>\w)(?P<tail>g)')
mat=regex.finditer(p)
print(mat)
for m in mat:
    print(m.groups()) # 匹配到的所有分组(包括命名分组)
    # print(m.group()) # m.group() == m.group(0) 匹配到的所有内容,与分组无关
    print(m.group(0))
    print(m.group(1))
    print(m.group(2))
    print(m.groupdict())
复制代码

 

迭代每个匹配到的整体

 

 

 

groups()取所有分组(包括命名分组)为一个元组

groupdict()取所有命名分组为dict

group()按编号取值(包括命名分组)

都是针对<re.Match object; span(0,6),match='bottle'>对象操作

 

复制代码
import re
p='''bottle\r\nbag\r\nbig\napple'''

regex=re.compile('(b)(\w+)',re.M|re.I)
b=regex.match(p)
print(b)
print(b.groups(),b.group(0),p[b.start():b.end()])
print(b.groupdict())
复制代码

 

 

 一个快速取值的方法是b.group()或b.group(0)

 

复制代码
import re
p='''bottle\r\nbag\r\nbig\napple'''

regex=re.compile('(b)(\w+)',re.M|re.I)
b=regex.search(p,1)
print(b.groups())
复制代码

 

 

 指定起始位置

 

复制代码
import re
p='''bottle\r\nbag\r\nbig\napple'''

regex=re.compile(r'(b\w+)\r\n(?P<name1>b\w+)\r\n(?P<name2>b\w+)')
b=regex.match(p)
print(b)
print('''b.group()= {}'''.format(b.group(0)))
print(b.groups(),b.group(1),b.group(2),b.group(3))
print(b.groupdict())
print(b.groupdict()['name1'])
print(b.groupdict()['name2'])
复制代码

 

 

 

复制代码
import re
p='''bottle\r\nbag\r\nbig\napple'''

regex=re.compile(r'b\w+\r\n(?P<name1>b\w+)\r\n(?P<name2>b\w+)')

b=regex.findall(p)
print(b) # 只匹配到一个,为分组形成的元组
for m in b[0]:
    print(type(m),m)
复制代码

 

 

 

复制代码
import re
p='''bottle\r\nbag\r\nbig\napple'''

regex=re.compile(r'(b\w+)\r\n(?P<name1>b\w+)\r\n(?P<name2>b\w+)')

b=regex.findall(p)
print(b) # 只匹配到一个,为分组形成的元组
for m in b[0]:
    print(type(m),m)
复制代码

 

 

 

复制代码
import re
p='''bottle\r\nbag\r\nbig\napple'''


regex=re.compile('(?P<head>b\w+)')
b=regex.finditer(p)
print(b)
for m in b: # finditer找到一个匹配,就yield一个re.Match对象
    print(type(m),m,m.group(),m.group('head'),m.groupdict()['head'])
复制代码

 

 

 

 

 

import re
p='''bottle\r\nbag\r\nbig\napple'''


regex=re.compile('(b)(\w+)')
b=regex.findall(p)
print(b) # 如果匹配中有分组,则元素为元组,忽略命名分组
for m in b:
print(m)

  

 

 

 

import re
s='''os.path([path])  sub-path'''
print(re.split('[^-\w]+',s)) # 将-作为连字符

 

 

posted @   ascertain  阅读(1232)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示