python--正则表达式中(.)(*)(.*?)以及re.S的认识

时间:2021-05-29 22:34:13

https://yiyibooks.cn/xx/python_352/library/re.html

看command:

 
 
 1 #-*-coding:gb2312-*-
 2 __author__ = 'fudandax'
 3 import re
 4 str = 'aabhh\nacbccd\na\nbbdffbgg'
 5 #一个'.'就是匹配\n(换行符)以外的任何字符
 6 print(re.findall(r'a.b',str))
 7 #一个'*'前面的字符出现0次或以上
 8 print(re.findall(r'a*b',str))
 9 #贪婪,匹配从.*前面为开始到后面为结束的所有内容。
10 print(re.findall(r'a.*b',str))
11 #非贪婪,遇到开始和结束就截取,因此截取多次符合的结果,中间没有字符也会被截取 ???
12 print(re.findall(r'a.*?b',str))
13 #非贪婪,与上面是一样的,只是与上面相比,多了一个括号,只保留括号中的内容
14 print(re.findall(r'a(.*?)b',str))
15 #re.S不会对\n进行中断
16 print(re.findall(r'a(.*?)b',str,re.S))
17 #保留a,b中间的内容
18 print(re.findall(r'a(.+?)b',str))
19 print(re.findall(r'a(.+?)b',str)[0])
 
 

 

 
['aab', 'acb']
['aab', 'b', 'b', 'b', 'b']
['aab', 'acb']
['aab', 'acb']
['a', 'c']
['a', 'c', '\n']
['a', 'c']
a