python正则是什么?
正则表达式是一个强大的字符串处理工具方法,关于字符串的操作绝大部分都可以使用正则表达式来解决,爬虫工作者更为重要,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的。
分享一下我学习正则表达式的参考资料链接: https://www.runoob.com/python/python-reg-expressions.html
下面,我来介绍一下python中的正则表达式是怎么应用的
一.python中的正则表达式大致分为:
1.1. 元字符
1.2. 模式
1.3. 函数
1.4. re 内置对象用法
1.5. 分组用法
1.6. 环视用法
二.所有关于正则表达式的操作都使用 python 标准库中的 re 模块
小例子:
import re
s1 = 'hello World!'
regex = re.compile(s1, re.I)
print regex.match(s).group()
三.函数
简单分享一下三个函数match search compile,可以见下面图
四.分享一个找到的笔记实例
正则表达式实例:
#!/usr/bin/python
import re
line = "Cats are smarter than dogs"
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
print "matchObj.group() : ", matchObj.group()
print "matchObj.group(1) : ", matchObj.group(1)
print "matchObj.group(2) : ", matchObj.group(2)
else:
print "No match!!"
正则表达式:
r'(.*) are (.*?) .*'
解析:
首先,这是一个字符串,前面的一个 r 表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符。但是这个字符串里没有反斜杠,所以这个 r 可有可无。
(.*) 第一个匹配分组,.* 代表匹配除换行符之外的所有字符。
(.*?) 第二个匹配分组,.*? 后面多个问号,代表非贪婪模式,也就是说只匹配符合条件的最少字符
后面的一个 .* 没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入匹配结果中。
matchObj.group() 等同于 matchObj.group(0),表示匹配到的完整文本字符
matchObj.group(1) 得到第一组匹配结果,也就是(.*)匹配到的
matchObj.group(2) 得到第二组匹配结果,也就是(.*?)匹配到的
因为只有匹配结果中只有两组,所以如果填 3 时会报错。
五.可以先把文档过一遍,用到的时候多练习,熟能生巧。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有