Python之正则re模块 --- findall()详解
2020-12-13 04:34
标签:模块 正则 python 有一个 字符串 返回 第一个字符 第一个 遇到 在本例中"/w+/s+/w+"第一次匹配到的字符为"2345 3456",由于是贪婪模式会 继续匹配,第二次从"4567"开始匹配匹配到的结果为字符串"4567 5678" 原理:正则表达式中有一个括号时,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果,但是整个正则表达式执行了,只不过只输出括号匹配到的内容, 匹配过程: 1. 第一次匹配时跟上述没有括号时一样,匹配到 "2345 3456" ,只不过只输出(/w+)匹配 到的结果 即"2345", 2. 第二次匹配同理从"4567" 开始,匹配到"4567 5678",但是,只输出"4567" 从输出的结果可以看出,有两个元组,每一个元组中有 两个字符串 : 其中,第一个元组种的第一个字符串"2345 3456"是最外面的括号输出的结果,第二个字符串是里面括号(/w+)输出的结果 "2345", 第二个元组是 第二次匹配的结果 -- 详解同第一次匹配。 第一个 regex 中不带有括号,其输出的内容就是整个表达式所匹配到的内容。 第二个 regex 中带有1个括号,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果。 第三个 regex 中是带有2个括号的,我们可以看到其输出是一个list 中包含2个 tuple,--- 多个括号就会返回 多个括号分别匹配到的结果 正则表达式的特点: 1. 有括号时只能匹配到括号中的内容,没有括号就正常匹配。 2. 在正则里面 “()” 代表的是分组的意思,一个括号代表一个分组,你只能匹配到"()"中的内容 Python之正则re模块 --- findall()详解 标签:模块 正则 python 有一个 字符串 返回 第一个字符 第一个 遇到 原文地址:https://www.cnblogs.com/nbk-zyc/p/11113328.html1. findall() 函数的2种表示形式
1 import re
2 kk = re.compile(r‘\d+‘)
3 kk.findall(‘one1two2three3four4‘)
4 #[1,2,3,4]
5
6 #注意此处findall()的用法,可传两个参数;
7 kk = re.compile(r‘\d+‘)
8 re.findall(kk,"one123")
9 #[1,2,3]
2. 正则表达式可能遇到的坑 --- 正则表达式中的括号()
1. 当正则表达式中 没有括号时,就是正常匹配,如本例中"/w+/s+/w+"
1 import re
2 string="2345 3456 4567 5678"
3 regex=re.compile("\w+\s+\w+")
4 print(regex.findall(string))
5 #[‘2345 3456‘, ‘4567 5678‘]
6 #补充:
7 #\s -- 匹配任何不可见字符,包括空格、制表符、换页符等等
8 #\S -- 匹配任何可见字符 通常[/s/S] -- 可匹配任意字符
9 #[\s\S]*? -- 匹配懒惰模式的任意字符
2. 当正则表达式中有 一个括号时,如"(\w+)\s+\w+"其输出的内容就是括号匹配到的内容
import re
string="2345 3456 4567 5678"
regex1=re.compile("(\w+)\s+\w+")
print(regex1.findall(string))
#[‘2345‘, ‘4567‘]
3. 当正则表达式中有两个括号时,如 "((\w+)\s+\w+)",其输出结果是一个list 中包含2个 tuple
import re
string="2345 3456 4567 5678"
regex2=re.compile("((\w+)\s+\w+)")
print(regex2.findall(string))
#[(‘2345 3456‘, ‘2345‘), (‘4567 5678‘, ‘4567‘)]
3. findall() 使用总结:
下一篇:泛型实现常用算法
文章标题:Python之正则re模块 --- findall()详解
文章链接:http://soscw.com/essay/29608.html