模块名称: re
方法名称: re.compile
方法描述: 将一段正则表达式编译成一个python的正则表达式对象,利用这个对象可以使用match和search等一些方法
方法示例:
编译一个匹配html中的链接的正则对象,目的是抽取出target属性中的值(抽取的值就是匹配出在正则中用'()'括起来的字符串)
注:re.IGNORECASE表示忽略大小写
方法名称: re.match(patter, string, flags=0)
方法描述: 从string字符串的开始匹配符合正则表达式的字符串,如果匹配成功返回一个MatchObject对象,否则返回None。
方法示例:
#注: 通过调用MatchObject对象的groups方法得到一个要抽取的所有字符串的一个元组对象
方法名称: re.search(patter, string, flags=0)
方法描述: 搜索整个字符串,如果匹配成功返回一个MatchObject对象,否则返回None。
方法示例:
方法名称: re.findall(pattern, string, flags=0)
方法描述:搜索整个字符串,如果找到匹配,返回一个分组的元组。
方法示例:
方法名称: re.sub(pattern, repl, string, count=0, flags=0)
方法描述:用repl替换string中匹配到pattern的字符串,repl也可以是个函数返回替换的字符串
方法示例:替换target中的值将_blank => _blank
1.repl是字符串
'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)
最后解释一下贪婪模式:
'*' '+' '?' 修饰浮都是贪婪的,所谓贪婪指的是他们会尽可能的匹配多的字符。比如:<.*>对于<a>haha</a>,会匹配整个字符串而不是<a>,如果想要匹配<a>的话在*后面加一个修饰浮'?'就会如愿.<.*?>
方法名称: 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>的话在*后面加一个修饰浮'?'就会如愿.<.*?>