1.re.findall("a","ab")
a:匹配规则 ab:要匹配的内容
结果以列表的形式返回:['a']
2.元字符:".","^","$","*","+","?","{ }","[ ]","|","( )","\"
".":匹配除换行符“\n”以外任何字符;
import re A = re.findall('ab.d',"abcdefg") B = re.findall('ab.e',"abcdefg") print(A) #['abcd'] print(B) #[]
"^":匹配字符串开头
import re A = re.findall('^ab',"abcdefg") B = re.findall('^bc',"abcdefg") print(A) #['ab'] print(B) #[]
"$":匹配字符串结尾
import re A = re.findall('ab$',"abcdefg") B = re.findall('fg$',"abcdefg") print(A) #[] print(B) #['fg']
"*":匹配前一个字符0次或无限次
import re A = re.findall('ab*',"abbdefg") B = re.findall('ab*',"acdefg") print(A) #['abb'] print(B) #['a']
"+":匹配前一个字符1次或无限次
"?":匹配前一个字符0次或1次
"{n}":匹配前一个字符n次
"{n,m}":匹配前一个字符n至m次(闭区间)
"[ab]":匹配a或b
import re A = re.findall('a[bc]d',"abcdefg") B = re.findall('a[bc]d',"abdefg") C = re.findall('a[bc]d',"acdefg") print(A) #[] print(B) #['abd'] print(C) #['acd']
"\":1.反斜杠后面跟元字符,使元字符去除特殊功能
2.后面跟普通字符,产生特殊功能
3.引用序列对应的字组所匹配的字符串
import re A = re.search(r"(alex)(eric)com\2","alexericcomeric").group() print(A) #alexericcomeric
\d:匹配任何十进制数,相当于[0-9]
\D:匹配任何非数字字符,相当于[^0-9]
\s:匹配任何空白字符,相当于[\t\n\r\f\v]
\S:匹配任何非空白字符,相当于[^\t\n\r\f\v]
\w:匹配任何字母数字字符,相当于[a-zA-z0-9]
\W:匹配任何非字母数字字符,相当于[^a-zA-z0-9]
\b:匹配一个单词边界,就是指单词和空格间的位置
3.“*”、“+”、“?”都是贪婪匹配(指尽可能多的匹配),在后面加个"?",可以该非贪婪模式,但如果前后均有限制条件,则取括号中的值
import re A = re.findall(r"a(\d+?)","a23b") #非贪婪模式 B = re.findall(r"a(\d+)","a23b") print(A) #['2'] print(B) #['23']
import re A = re.findall(r"a(\d+?)b","a23b") B = re.findall(r"a(\d+)b","a23b") print(A) #['23'] print(B) #['23']
4.r表示原生字符,也就是说不转义字符不需要再次被转义
比如你要表示‘\n’,可以这样:r'\n'
但是如果你不用原生字符 而是用字符串你得这样:‘\\n’
5.re.I:使匹配对大小写不敏感
re.L:做本地化识别(locale-aware)匹配
re.M:多行匹配,影响^和$
re.S:使“.”匹配包括换行在内的所有字符
re.U:根据Unicode字符集解析字符
6.group():返回被RE匹配的字符串
start():返回匹配开始的位置
end():返回匹配结束的位置
span():返回一个元组包含匹配(开始,结束)的位置
7.如果在正则表达式中使用了"()",匹配结果为括号中的内容,使用"?:"可以变为非捕获
import re A = re.findall(r"www.(baidu|abc).com","www.baidu.com") B = re.findall(r"www.(?:baidu|abc).com","www.baidu.com") print(A) #['baidu'] print(B) #['www.baidu.com']
来源:https://www.cnblogs.com/omg-hxy/p/9097925.html