正则表达式

正则表达式解析
    为什么引入正则表达式?
    (正则匹配)用来匹配一类具有相同规则的字符串
    (正则替换)将匹配得到的字符串进行替换

规则:
    单字符:
        . : 除换行以外所有的字符
        []:[nxr] [a-z] 匹配中括号中任意一个字符
         \d:数字 0-9
         \D:非数字
         \w:数字,字母,下划线,中文
         \W:非\w 
         \s: 所有的空白字符
         \S:非\s
    数量修饰:
        * : 任意多次 >=0
        + : 至少一次 >=1
        ?: 0次或者1次
        {m}: m次
        {m,}:至少m次
        {m,n}:匹配[m,n]次
    边界:
        \b, \B
        ^: 以某某开头
        $: 已某某结尾
    分组:
        (){4} 视为一个整体
        ()    \1 \2  子模式
            import re
            string = '<p><div><span>李四</span></div></p>'
            # pattern = r'<p>(.*?)</p>'
            pattern = r'<(\w+)><(\w+)>\w+</\2></\1>' 
            pattern = re.compile(pattern)
            result = pattern.search(string)
            print(result)  # <re.Match object; span=(3, 29), match='<div><span>    李四</span></div>'>
    贪婪模式:
        .*?
        .+?
    re.I 忽略大小写
    re.M 多行匹配
    re.S 单行匹配 可以使.匹配任意字符(包括换行符)
    match/search/findall
    re.sub(正则表达式,替换的内容(函数),带匹配的字符串)
        import re
        def fun(s):  # s为正则匹配得到的字符串
            ret = int(s.group()) - 10
            return str(ret)
        string = '我喜欢身高为170的女孩'
        pattern = r'\d+'
        pattern = re.compile(pattern)
        result = pattern.sub(fun, string)
        print(result)  # 我喜欢身高为160的女孩

 

posted @ 2019-08-11 11:45  飞蝎儿  阅读(77)  评论(0编辑  收藏  举报