正则表达式
概念:使用单个字符串来描述匹配一系列符合某个句法规则的字符串。
依次拿出表达式和文本中的字符串进行比较,而表达式是你描述出来的符合某个句法规则的,若每一个字符串都能匹配上,则匹配成功。
首先: import re Python正则表达式的模块
其中,compile(参数),此参数即为你设定的匹配规则的表达式,re.complie(表达式),则会生成 Pattern对象,再用 Pattern.match(参数),参数即你匹配的文本中的字符串,返回一个match对象,即为你的匹配结果 。若匹配失败则返回None对象,若匹配成功,就是一个match对象。
下面是match对象几个常用的方法:设 m为一个match对象
m.group() 返回的是一个字符串,即为你匹配的结果
m.string 是被匹配的文本中的字符串
m.re是Pattern对象
match进行匹配的第二种方法 :m=re.match(r’a’ , str) 即用str来匹配 ’a’
等同于图中 先compile()生成一个Pattern对象 ,再用Pattern.match()
接下来,我们还补充一些 match对象的其他常用方法:
search(pattern,string) 在一个字符串中查找匹配,只返回查找匹配到的第一个 match对象
findall(pattern,string) 找到匹配,返回所有查找匹配到的元素 返回的是一个列表
sub(pattern,replace,string) 将一个字符串中匹配正则表达式的部分替换为replace的值 返回一个 string字符串
split(pattern,string) 根据匹配的pattern为分割符,进行分割,返回的是分割之后列表
接下来,我们讲述正则匹配表达式中的一些语法及含义:
. 匹配任意字符
[…] 匹配括号中的字符集
\d / \D 匹配数字和非数字
\s / \S 匹配空白和非空白字符
\w / \W 匹配单词字符[a-zA-Z0-9]/非单词字符
* 匹配前一个字符0次或者无限次
+ 匹配前一个字符1次或者无限次
? 匹配前一个字符0次或者1次
{m}, {m,n} 匹配前一个字符m次或者m到n次
*? / +? / ?? 尽可能少匹配字符 其中 *? 即最少匹配0次 +? 最少匹配1次 ?? 最少匹配0次
^ 匹配字符串开头
$ 匹配字符串结尾
\A/\Z 指定的字符串匹配出现在开头/结尾
| 匹配左右任意一个表达式
(ab) 括号中表达式作为一个分组
\<number> 引用编号为num的分组匹配到的字符串
(?P<name>) 分组起一个别名
(?P=name) 引用别名为name的分组匹配字符串
小例子:
一、匹配一个QQ或者163邮箱(6-10)位
re.compile(r'^[\d]{6,10}@(qq|163).com$')
二、匹配一个0-100的数字
re.compile(r'[1-9]?[0-9]$|100')
三、匹配一个 html标签 <body>Python</body>
re.match(r'<([\w]+>)[\w]+</\1','<body>Python</body>')
这是我在慕课网上学习pyhton正则表达式上的一些笔记,视频网站链接在下面,大家可以点击链接进行学习
视频网站
如果大家对于这篇博客有什么不懂的地方或者发现了一些不正确的地方,或者写作的一些不足,可以在下面评论,我会学习改正,谢谢大家!