python re findall 效率_python 笔记 之 re模块 正则及效率问题

'''

搜索:regex101 在线正则匹配

https://regex101.com/

'''

'''

数字:\d

非数字:\D

空字符串:\s

非空字符串:\S

accsii码:\w

非accsii码:\W

所有字符:*

单个任意字符:.

0个或者一个:?

出现m-n次:{m,n}

一个或多个:+

以什么开头:^

以什么结尾:$

或者:| ---> abc|bcd

匹配到的正则命名为name变量:{?P正则}

'''

'''

匹配'

xxx

'

'''

# re.compile('\w*)>.*(?P=tagname)>')

# re.match('

xxx

')

#a = timeit.timeit(setup='''import re ; reg = re.compile('\w*)>.*(?P=tagname)>')''',stmt='''reg.match('

xxx

')''',number=1000000)

#b = timeit.timeit(setup='''import re''',stmt='''re.match('\w*)>.*(?P=tagname)>','

xxx

')''',number=1000000)

# print(a)

# print(b)

# 0.895464103505607

# 2.401233610585925

# 先写出正则表达式对象,然后匹配 效率高

'''

在:https://regex101.com/中 输入:

\w*)>.*(?P=tagname)>

\w*)>(.*)(?P=tagname)>

\w*)>.*(?P=tagname)>

xxx

想要什么结果,加括号

加括号进行分组

(\w*)>(.*)(?P=tagname)>) # 有三个组

'''

#先声明一个正则对象,通过正则对象去匹配,这样效率高

s = str("aa

xxx

到的 的 xxx")

# reg = re.compile(r"(\w*)>(.*)(?P=tagname)>)") #加个r解决转义问题

reg = re.compile(r"(\w+)>(.*)(?P=tagname)>)") #加个r解决转义问题

a=reg.match(s) # 以开头进行匹配,没有返回空

print(a) # None

b=reg.search(s).groups() # 从开头进行匹配,然后匹配第二个,返回一个结果

g=reg.search(s).group("tagname") # 从开头进行匹配,然后匹配第二个,返回一个结果

# group()[1]

print(b) #('

xxx

', 'h1', 'xxx')

print(g) #h1

# reg.split()

t = reg.findall(s)

print(t) #[('

xxx

', 'h1', 'xxx'), ('xxx', 'html', 'xxx')]

# reg.groups() # match search 的

# 利用 https://regex101.com/ 实时调试修改

x = '1one2two3three4four'

reg1 = re.compile("\d")

c = reg1.findall(x) # 查找正则 -- 匹配所有的

d = reg1.split(x) # 正则为分隔符

print(c) # ['1', '2', '3', '4']

print(d) # ['', 'one', 'two', 'three', 'four']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值