正则表达式

0.常用匹配规则

规则描述
\s任意空白字符
\d任意数字
^匹配字符串的开头
$匹配字符串的结尾
[…]匹配列出的单个字符
[^…]匹配除了列出字符以外的单个字符
?非贪婪模式
{n}精确匹配前面n个表达式
{n,m}匹配n-m个表达式

简要介绍常用的匹配方法

方法名作用
match从字符串开头开始匹配
search从任意位置开始匹配,并返回成功匹配的第一个
findall返回成功匹配的所有内容
sub匹配表达式并修改
complie将正则字符串编译成正则表达式对象

1.match()

基本使用

import re
content="https://mp.123csdn.234554 net/5453342 mdeditor#"

result=re.match("^https://mp.\d*csdn.(\d*)",content)
print(result)   #out:<_sre.SRE_Match object; span=(0, 25), match='https://mp.123csdn.234554'>
#group()打印匹配到的内容
print(result.group())   #out:https://mp.123csdn.234554
#在正则表达式中加(),通过group(n)获取第n个()匹配的部分
print(result.group(1))   #out:234554
#span()打印匹配的范围
print(result.span())    #out:(0, 25)

贪婪与非贪婪(?)

import re
content="https://mp.123csdn.234554 net/5453342 mdeditor#"

result=re.match("^https://mp.*(\d+)",content)
#.*默认贪婪
print(result.group(1))   #out:2
result=re.match("^https://mp.*?(\d+)",content)
#?可表示非贪婪
print(result.group(1))   #out:123

2.search()

match()只能从头开始匹配,也就是说如果开始不匹配,则会返回匹配失败。而search()则可以满足从任意位置开始匹配的要求

import re
content="test https://mp.123csdn.234554 net/5453342 mdeditor#"

result=re.match("https://mp.*(\d+)",content)
print(result)   #out:None
result=re.search("https://mp.*(\d+)",content)
print(result.group())   #out:https://mp.123csdn.234554 net/5453342 

3.findall()

search()只会返回成功匹配的第一个内容,而findall()会返回所有的内容

import re
content="test https://mp.123csdn.234554 net/5453342 mdeditor#"

result=re.search("\d+",content)
print(result.group())   #out:123
result=re.findall("\d+",content)
print(result)   #out:['123', '234554', '5453342']

4.sub()

sub({0},{1},{2})
{0} 正字表达式(被替换内容)
{1} 替换内容
{2} 原始内容

import re
content="test https://mp.123csdn.234554 net/5453342 mdeditor#"

result=re.sub("\d+",'',content)
print(result)

5.complie()

将表达式字符串编译为表达式对象,便于重复使用

import re

content1="2018-11-26 12:00"
content2="2018-11-27 12:00"
content3="2018-11-28 12:00"

pattern=re.compile("\d{2}:\d{2}")

result1=re.sub(pattern,"",content1)
result2=re.sub(pattern,"",content2)
result3=re.sub(pattern,"",content3)

print(result1,result2,result3)	#out:2018-11-26  2018-11-27  2018-11-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值