python常用的正则表达式操作

模块名称: re

方法名称: re.compile
方法描述: 将一段正则表达式编译成一个python的正则表达式对象,利用这个对象可以使用match和search等一些方法
方法示例:
编译一个匹配html中的链接的正则对象,目的是抽取出target属性中的值(抽取的值就是匹配出在正则中用'()'括起来的字符串)

>>> target_re = re.compile(r'<\s*a(.*?)target=["|\']([^"\']*?)["|\']', re.IGNORECASE)

注:re.IGNORECASE表示忽略大小写

方法名称: re.match(patter, string, flags=0)
方法描述: 从string字符串的开始匹配符合正则表达式的字符串,如果匹配成功返回一个MatchObject对象,否则返回None。
方法示例:

>>> target_re = re.compile(r'<\s*a(.*?)target=["|\']([^"\']*?)["|\']', re.IGNORECASE)
>>> a = re.match(target_re, 'aaa<a href="http://renren.com" target="_balnk">点击打开链接</a>aa<a href="http://renren.com" target="_balnk">点击打开链接</a>aa'
>>> a is None
True
>>> a = re.match(target_re, '<a href="http://renren.com" target="_balnk">点击打开链接</a>aa<a href="http://renren.com" target="_balnk">点击打开链接</a>aa'
>>> a.groups()
(' href="http://renren.com" ', '_balnk')

#注: 通过调用MatchObject对象的groups方法得到一个要抽取的所有字符串的一个元组对象


方法名称: re.search(patter, string, flags=0)
方法描述: 搜索整个字符串,如果匹配成功返回一个MatchObject对象,否则返回None。
方法示例:

>>> target_re = re.compile(r'<\s*a(.*?)target=["|\']([^"\']*?)["|\']', re.IGNORECASE)
>>> a = re.search(target_re, 'aaa<a href="http://renren.com" target="_balnk">点击打开链接</a>aa<a href="http://renren.com" target="_balnk">点击打开链接</a>aa'
>>> a.groups()
(' href="http://renren.com" ', '_balnk')

方法名称: re.findall(pattern, string, flags=0)
方法描述:搜索整个字符串,如果找到匹配,返回一个分组的元组。
方法示例:

>>> a = re.findall(target_re, '<a href="http://renren.com" target="_balnk">点击打开链接</a>aa<a href="http://renren.com" target="_balnk">点击打开链接</a>aa')
>>> a
[(' href="http://renren.com" ', '_balnk'), (' href="http://renren.com" ', '_balnk')]

方法名称: re.sub(pattern, repl, string, count=0, flags=0)
方法描述:用repl替换string中匹配到pattern的字符串,repl也可以是个函数返回替换的字符串
方法示例:替换target中的值将_blank => _blank
1.repl是字符串

>>> htmls = re.sub(target_re, r'<a\1target="_blank"', 'aaaaas<a href="http://renren.com" target="_balnk">bb</a>aa<a href="http://renren.com" target="_balnk">aa</a>aa')
>>> htmls

'aaaaas<a href="http://renren.com" target="_blank">bb</a>aa<a href="http://renren.com" target="_blank">aa</a>aa'
2.repl是函数(如果target值中有b则返回_blank否则设置为_Self)

>>> htmls = re.sub(target_re, lambda x: "<a" + x.group(1)+ 'target="' + ('_blank"' if 'b' in x.group(2) else '_self"'), '<a href="http://renren.com" target="p">')
>>> htmls
'<a href="http://renren.com" target="_self">'

最后解释一下贪婪模式:
'*' '+' '?' 修饰浮都是贪婪的,所谓贪婪指的是他们会尽可能的匹配多的字符。比如:<.*>对于<a>haha</a>,会匹配整个字符串而不是<a>,如果想要匹配<a>的话在*后面加一个修饰浮'?'就会如愿.<.*?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值