python 正则
一. 正则 r'(.*) (.*?) .*'
1.1. 符号r
<1>. r表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符
1.2. 符号.
<1>. 匹配除换行符以外任意字符
<2>. 测试如下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 import re 4 str1 = 'aababaaba' 5 print re.findall(r'a.b', str1)
1.3. 符号*
<1>. 前面那个字符,重复0次或更多次
<2>. 测试如下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/python # -*- coding: UTF-8 -*- import re str1 = 'aababaaba' print re.findall(r'a*b', str1)
ps:测试程序中符号*前是a, 故a重复几次都可以提取出来
1.4. 组合符号.*
<1>. 贪婪算法,尽可能重复多次
<2>. 测试如下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/python # -*- coding: UTF-8 -*- import re str1 = 'aababaaba' print re.findall(r'a.*b', str1)
<3>. .*
组合在一块儿,就变成了另一个意思。在例子中,就是从第一个字母开始扫,遇到a
就开始截取,然后找所有的b
,最后找到以b
结尾尽可能长的一段字符串
1.5. 组合符号.*?
<1>. 非贪婪算法,遇到一次停一次
<2>. 测试如下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/python # -*- coding: UTF-8 -*- import re str1 = 'aababaaba' print re.findall(r'a.*?b', str1)
1.6. 组合字符(.*?)
<1>. 与1.5相似,但只保留括号中的内容
<2>. 测试如下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/usr/bin/python # -*- coding: UTF-8 -*- import re str1 = 'aababaaba' print re.findall(r'a(.*?)b', str1)