3.28python学习笔记
作者:互联网
正则表达式
#正则表达式是一门独立的语言 专门用来匹配、校验、筛查所需的数据,任何编程语言都可以使用
#在python中如果想用就必须借助于内置模块re。
练习网站
http://tool.chinaz.com/regex/
字符组
'''单个字符组默认一次只匹配一个字符'''
1.[0123456789] 匹配0到9之间的任意一个数字
2.[0-9] 匹配0到9之间的任意一个数字(简写)
3.[a-z] 匹配a到z之间的任意一个小写字母
4.[A-Z] 匹配A到Z之间的任意一个大写字母
5.[0-9a-zA-Z] 匹配任意一个数字或者大小写字母(没有顺序)
常用特殊符号
. 匹配除换行符(\n)以外的任意字符
\w 匹配数字、字母、下划线(后续筛选变量名可能用到)
\d 匹配任意的数字
\t 匹配一个制表符(tab键)
^ 匹配字符串的开始
eg:^9 找9并且这个9必须在开头
$ 匹配字符串的结尾
eg:9$ 找9并且这个9必须在末尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
a|b 匹配a或者b 管道符就是or(或)的意思
() 给正则表达式分组 不影响正则匹配(后续再讲)
[] 字符组的概念(里面所有的数据都是或的关系)
[^] 上箭号出现在了中括号的里面意思是取反操作
量词
量词必须跟在表达式的后面 不能单独使用 目的是增加匹配的字符数
字符 | 功能 |
---|---|
* | 匹配前⼀个字符出现0次或者⽆限次,即可有可⽆ |
+ | 匹配前⼀个字符出现1次或者⽆限次,即⾄少有1次 |
? | 匹配前⼀个字符出现1次或者0次,即要么有1次,要么没有 |
{m} | 匹配前⼀个字符出现m次 |
{m,n} | 匹配前⼀个字符出现从m到n次,若省略m,则匹配0到n次,若省略n,则匹配m到无限次 |
正则表达式贪婪与非贪婪匹配
#Python⾥数量词默认是贪婪的,总是尝试匹配尽可能多的字符;⾮贪婪则相反,总是尝试匹配尽可能少的字符。
举个例子:
当要去在”abbbc”中筛选出‘ab’,利用正则表达式”ab*”,将找到”abbb”。而如果使用非贪婪的数量词”ab*?”,将找到”ab”。
所以一般情况下使用非贪婪模式来提取。(在"*","?","+","{m,n}"后⾯加上?,使贪婪变成⾮贪婪。)
python内置模块之re模块
#re.match函数
re.match(正则表达式,待匹配的文本)
#使用说明
1.从字符串的起始位置匹配,如果不是起始位置匹配成功的话,match()就返回None。匹配成功re.match方法返回一个匹配的对象。
2.匹配到数据的话,可以使⽤group⽅法来提取数据。以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
3.group()用来提出分组截获的字符串,()用来分组,group() 同group(0)就是匹配正则表达式整体结果,group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。没有匹配成功的,re.search()返回None。
#re.search函数
re.search(正则表达式,待匹配的文本)
#使用说明
re.search 扫描整个字符串并返回第一个成功的匹配,如果没有匹配,就返回一个 None。
re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配
#re.findall函数
re.findall(正则表达式,待匹配的文本)
#使用说明
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。注意: match 和 search 是匹配一次 findall 匹配所有。
#re.finditer函数
re.finditer(正则表达式,待匹配的文本)
#使用说明
和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
标签:匹配,re,python,笔记,group,正则表达式,字符串,3.28,match 来源: https://www.cnblogs.com/zq0408/p/16138417.html