https://blog.csdn.net/weixin_45912307/article/details/108615866
python re模块:
\A:表示从字符串的开始处匹配
\Z:表示从字符串的结束处匹配,如果存在换行,只匹配到换行前的结束字符串。
\b:匹配一个单词边界,也就是指单词和空格间的位置。例如, 'py\b' 可以匹配"python" 中的 'py',但不能匹配 "openpyxl" 中的 'py'。
\B:匹配非单词边界。 'py\b' 可以匹配"openpyxl" 中的 'py',但不能匹配"python" 中的 'py'。
\d:匹配任意数字,等价于 [0-9]。 digit
\D:匹配任意非数字字符,等价于 [^\d]。not digit
\s:匹配任意空白字符,等价于 [\t\n\r\f]。 space
\S:匹配任意非空白字符,等价于 [^\s]。
\w:匹配任意字母数字及下划线,等价于[a-zA-Z0-9_]。
\W:匹配任意非字母数字及下划线,等价于[^\w]
\\:匹配原义的反斜杠\。
‘.’用于匹配除换行符(\n)之外的所有字符。
‘^’用于匹配字符串的开始,即行首。
‘$’用于匹配字符串的末尾(末尾如果有换行符\n,就匹配\n前面的那个字符),即行尾。
定义正则验证次数:
‘*’用于将前面的模式匹配0次或多次(贪婪模式,即尽可能多的匹配) >=0
‘+’用于将前面的模式匹配1次或多次(贪婪模式) >=1
‘?’用于将前面的模式匹配0次或1次(贪婪模式) 0 ,1
'{m}' 用于验证将前面的模式匹配m次
'{m,}'用于验证将前面的模式匹配m次或者多次 >=m
'{m,n}' 用于验证将前面的模式匹配大于等于m次并且小于等于n次
‘*?,+?,??’即上面三种特殊字符的非贪婪模式(尽可能少的匹配)。
‘{m,n}’用于将前面的模式匹配m次到n次(贪婪模式),即最小匹配m次,最大匹配n次。
‘{m,n}?’即上面‘{m,n}’的非贪婪版本。
Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;
非贪婪则相反,总是尝试匹配尽可能少的字符。
在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。
其他字符
‘\\’:'\'是转义字符,在特殊字符前面加上\,特殊字符就失去了其所代表的含义,比如\+就仅仅代表加号+本身。
‘[]’用于标示一组字符,如果^是第一个字符,则标示的是一个补集。比如[0-9]表示所有的数字,[^0-9]表示除了数字外的字符。
‘|’比如A|B用于匹配A或B。
‘(...)’用于匹配括号中的模式,可以在字符串中检索或匹配我们所需要的内容。
常用方法:
re.match(pattern,str) 开头进行匹配,匹配不成功则返回None(从开头匹配一次)
re.search(pattern,str) # 匹配到的是整个字符串
re.findall(pattern,str) findall 查找所有
re.sub(pattern,'新的内容',str) 替换
re.split(pattern,str) [] 切割
match() 从开头匹配一次
search() 只匹配一次