正则规则
1、本身是哪一个字符,就匹配字符串中的哪一个字符;
2、字符组:[字符],一个字符组匹配一个字符;
3、非字符组:[^],匹配不符合字符组中的内容
3、元字符:
- \d:表示0-9任意数字
- \w:表示数字、字母、下划线
- \s:表示空格、换行符(\n)、制表符(\t)
- \D:表示非数字
- \W:表示非数字字母下划线
- \S:表示非空格、换行符、制表符
- .:表示除换行符之外的任意内容
- ^:表示一个字符的开始
- $:表示一个字符的结束
- |:表示或,要匹配的长字符总在|之前
- ():表示分组
4、量词: - {n}:表示出现n次
- {n,}:表示至少出现n次
- {n,m}:表示至少出现n次,至多出现m次
- *:表示出现0次或多次
- +:表示出现1次或多次
- ?:表示出现0次或1次
5、正则默认贪婪匹配,即在符合量词条件下尽可能多匹配
6、非贪婪匹配(惰性匹配):量词后面的?才是非贪婪模式
元字符+量词+?+x:表示按照元字符规则在量词范围内匹配,遇到x就结束 - .*?x:匹配任意内容任意多次直到遇见x就结束
re模块
1、re.findall()
返回列表
import re
res = re.findall('\d+', 'as123rt566')
print(res)
['123', '566']
2、re.search()
返回一个对象且这个对象是从待匹配对象中匹配到的第一个符合条件的项,要用到group()来取值,如果没有符合条件的匹配项则输出None
import re
res = re.search('\d+', 'as123rt566')
print(res)
print(res.group())
<_sre.SRE_Match object; span=(2, 5), match='123'>
123
3、re.match()
只能从待匹配对象开头开始匹配,相当于re.search(’^/d+’,str)
res = re.match('\d+', 'as123rt566')
print(res)
None
res = re.match('\d+',