一、正则定义
正则表达式是对字符串操作的一种逻辑公式,就是用一些特定字符、及这些特定字符的组合,组成一个“规则字符串",这个”规则字符串“用来表达对字符串的一种过滤逻辑
正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念。利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌
二、常用元字符
1、^:匹配字符串的开头 2、$:匹配字符串的结尾
3、.:匹配任意字符,除了换行符,当re.DOTALL标记被指定时,可以匹配包括换行符的任意字符
4、[…]:用来匹配一组字符,单独列出:[amk]匹配’a’,‘m’或’k’
5、[…]:不在[]中的字符:[abc]:匹配除了abc之外的字符
6、*:匹配0个或多个表达式
7、+:匹配1个或多个表达式
8、?:匹配0个或1个由前面表达式片断
9、{n}:精确匹配n个前面的表达式
10、{n,m}:匹配n到m个前面的表达式
11、a|b:匹配a或b
12、():匹配括号内的表达式,也是一个组
13、\w:匹配字母、数字、下划线 14、\W:匹配非字母数字下划线
15、\s:匹配任意空白字符,等价于[\n\t\r\f]
16、\S:匹配任意非空字符
17、\d:匹配任意数字,等价于[0~9]
18、\D:匹配任意非数字
19、\A:匹配字符串开始
20、\Z:匹配字符串结束,如果存在换行,只匹配到换行前的结束字符串
21、\z:匹配字符串结束
22、\G:匹配最后匹配完成的位置
23、\n:匹配换行符
24、\t:匹配一个制表符
三、re常用方法
1、re.compile(string[,flag]):返回pattern对象
2、re.match (pattern,string[,flags]):会从string的开头开始,尝试匹配pattern,一直向后匹配,如果遇到无法匹配的字符,立即返回None
3、re.search(pattern,string[,flags])):search会扫描整个string查找匹配
4、re.split(pattern,string[,maxsplit]):按照能够匹配的子串将string分隔后返回列表
5、re.findall(pattern,string,[,flags]):搜索string,以列表形式返回全部子串
6、re.sub(pattern,repl,string[,count]):使用repl替换string中每一个匹配的子串后返回替换后的字符串
四、案例
1、match
import re
pattern1=‘python’
string1=‘python_python’
string2=’_python_python’
#<_sre.SRE_Match object; span=(0, 6), match=‘python’>
print(re.match(pattern1,string1))
print(re.match(pattern1,string2)) #None
2、search
import re
pattern1=‘python’
string1=’_python_python’
#<_sre.SRE_Match object; span=(1, 7), match=‘python’>
print(re.search(pattern1,string1))
3、split
import re
pattern1=’\s’
string1=‘R python hello world excel mysql python’
#[‘R’, ‘python’, ‘hello’, ‘world’, ‘excel’, ‘mysql’, ‘python’]
print(re.split(pattern1,string1))
4、findall
import re
pattern1=‘p\w+’
string1=‘R python php p_p java c python pymysql re p123 p!! p’
#[‘python’, ‘php’, ‘p_p’, ‘python’, ‘pymysql’, ‘p123’]
print(re.findall(pattern1,string1))
5、sub
import re
pattern = ‘p\S{5}’
string=‘R python php p_p java c python pymysql re p123 p!! p’
#R mysql php p_p java c mysql mysqll re p123 p!! p
print(re.sub(pattern,‘mysql’,string))
Python正则表达式
最新推荐文章于 2023-02-12 20:38:17 发布