python 正则

一. 正则 r'(.*)  (.*?) .*'

    1.1. 符号r

        <1>. r表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符

    1.2. 符号.

        <1>. 匹配除换行符以外任意字符

        <2>. 测试如下

1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 import re
4 str1 = 'aababaaba'
5 print re.findall(r'a.b', str1)
View Code

        

    1.3. 符号*

        <1>. 前面那个字符,重复0次或更多次

        <2>. 测试如下

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
str1 = 'aababaaba'
print re.findall(r'a*b', str1)
View Code

        

        ps:测试程序中符号*前是a, 故a重复几次都可以提取出来

    1.4. 组合符号.*

        <1>. 贪婪算法,尽可能重复多次

        <2>. 测试如下

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
str1 = 'aababaaba'
print re.findall(r'a.*b', str1)
View Code

        <3>. .*组合在一块儿,就变成了另一个意思。在例子中,就是从第一个字母开始扫,遇到a就开始截取,然后找所有的b,最后找到以b结尾尽可能长的一段字符串

    1.5. 组合符号.*?

        <1>. 非贪婪算法,遇到一次停一次

        <2>. 测试如下

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
str1 = 'aababaaba'
print re.findall(r'a.*?b', str1)
View Code

    1.6. 组合字符(.*?)

        <1>. 与1.5相似,但只保留括号中的内容

        <2>. 测试如下

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
str1 = 'aababaaba'
print re.findall(r'a(.*?)b', str1)
View Code

 

posted @ 2019-07-17 00:37  三七鸽  阅读(238)  评论(0编辑  收藏  举报