findall :获得符合模式的全部子串
findall(pattern, string, flags=0)
findall(模式, 字符串, flags=0)
flags 选项表:模式修正符
值
|
符号
|
说明
|
0
|
无任何要求
| |
1
|
re.I
|
不区分大小写
|
2
|
re.L
|
本地化识别(locale-aware)匹配
|
3
|
re.M
|
多行匹配,影响 ^ 和 $
|
4
|
re.S
|
使 . 匹配包括换行在内的所有字符
|
5
|
re.U
|
根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
|
re.X
|
该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
|
import re
print(re.findall('\d{3}','123a1234567')) # ['123', '123', '456']
import re
print(re.findall('(\d{3})([a-z]{2})','123abc3456defg789'))
# [('123', 'ab'), ('456', 'de')]
import re
print(re.findall('[1-9]\d{5}','BIT 510515')) # 获取邮政编码['510515']
import re
p = re.compile('\d+')
print(re.findall(p,'one1two2three3four4')) # p可以是对象 ['1', '2', '3', '4']
import re
str = 'aabbabaabbaa'
# 一个"."就是匹配除 \n (换行符)以外的任意一个字符
print(re.findall('a.b',str)) #['aab', 'aab']
# *前面的字符出现0次或以上
print(re.findall('a*b',str)) #['aab', 'b', 'ab', 'aab', 'b']
# 贪婪,匹配从 .*前面为开始到后面为结束的所有内容
print(re.findall('a.*b',str)) #['aabbabaabb']
# 非贪婪,遇到开始和结束就进行截取,因此截取多次符合的结果,中间没有字符也会被截取
print(re.findall('a.*?b',str)) #['aab', 'ab', 'aab']
# 非贪婪,只保留符合括号里条件的内容,而括号外面是条件,也要满足
print(re.findall('a(.*?)b',str)) #['a', '', 'a']
str = '''aabbab
aabbaa
bb'''
# 没有把最后一个换行的aab算进来
print(re.findall('a.*?b',str)) #['aab', 'ab', 'aab']
# re.S 不会被\n中断
print(re.findall('a.*?b',str,re.S)) #['aab', 'ab', 'aab', 'aa\n b']
import re #第一步,要引入re模块
a = re.findall("^匹配规则", "匹配规则这个字符串是否匹配")
#字符串开始位置与匹配规则符合就匹配,否则不匹配
print(a) #以列表形式返回匹配到的字符串
#打印出 ['匹配规则']
import re #第一步,要引入re模块
a = re.findall("[^a-z]", "匹配s规则这s个字符串") #反取,匹配出除字母外的字符
print(a) #以列表形式返回匹配到的字符串
#打印出 ['匹', '配', '规', '则', '这', '个', '字', '符', '串']
import re #第一步,要引入re模块
a = re.findall("匹配规则$", "这个字符串是否匹配规则")
#字符串结束位置与匹配规则符合就匹配,否则不匹配
print(a) #以列表形式返回匹配到的字符串
#打印出 ['匹配规则']
import re #第一步,要引入re模块
a = re.findall("匹配规则*", "这个字符串是否匹配规则则则则则")
print(a) #以列表形式返回匹配到的字符串
# 打印出 ['匹配规则则则则则']
import re #第一步,要引入re模块
a = re.findall("匹配+", "匹配配配配配规则这个字符串是否匹配规则则则则则")
print(a) #以列表形式返回匹配到的字符串
#打印出 ['匹配配配配配', '匹配']
import re
r = re.findall("\d+\w\d+", "a2b3c44d5")
print(r) # ['2b3', '44d5']
import re
origin = "hello alex acd 19"
r = re.findall("(a)(\w+)", origin) #多个分组
print(r) # [('a', 'lex'),('a', 'cd')]
import re
origin = "hello alex d19e"
r = re.findall("(a)(\w+(e))", origin) #分组中有分组
print(r) #[('a', 'le', 'e')]
import re
origin = "hello alex acd 19"
b = re.findall("a(?:\w+)",origin) # ?: 所有匹配到的字符串
print(b) # ['alex','acd']
#读取文件中的"http..."地址
import re
with open("c:/1/1.html",'r',encoding='utf-8') as f:
s=f.read()
l=re.findall('"http.*?"',s)
for i in l:
print(i)

