zoukankan      html  css  js  c++  java
  • python之正则表达式 re.findall 用法

     

    正则 re.findall 的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组)
    语法:findall(pattern, string, flags=0)

    第一个参数,正则表达式

    第二个参数,搜索的是那些字符串

    第三个参数,匹配的模式,其中re.S使匹配包括换行在内的所有字符。findall()函数是逐行匹配的。

    一、正则表达式的含义

    懒惰匹配与贪婪匹配。

    表达式 .* 的意思很好理解,就是单个字符匹配任意次,即贪婪匹配。
    表达式 .*? 是满足条件的情况只匹配一次,即懒惰匹配

    var str = 'Anna is {age} years old,Bob is {age} years old too';
    var expr = /{.*?}/g;
    console.log(str.replace(expr, '13'));
    命令行输出: Anna is 13 years old,Bob is 13 years old too
    
    可以看出,懒惰模式下,只要满足条件,就不再向后匹配,以下是贪婪模式:
    
    var str = 'Anna is {age} years old,Bob is {age} years old too';
    var expr = /{.*}/g;
    console.log(str.replace(expr, '13'));
    命令行输出: Anna is 13 years old too
    

      


    返回string中所有与pattern相匹配的全部字串,返回形式为数组

    符号^表示匹配以https开头的的字符串返回,
    regular_v2 = re.findall(r"^https","https://docs.python.org/3/whatsnew/3.6.html")
    print (regular_v2)  # ['https']
    
    用$符号表示以html结尾的字符串返回,判断是否字符串结束的字符串
    
    regular_v3 = re.findall(r"html$","https://docs.python.org/3/whatsnew/3.6.html")
    print (regular_v3)   # ['html']
     
    # [...]匹配括号中的其中一个字符
    regular_v4 = re.findall(r"[t,w]h","https://docs.python.org/3/whatsnew/3.6.html")
    print (regular_v4)   # ['th', 'wh']
    

      

    “d”是正则语法规则用来匹配0到9之间的数返回列表
    regular_v5 = re.findall(r"\d","https://docs.python.org/3/whatsnew/3.6.html")
    regular_v6 = re.findall(r"\d\d\d","https://docs.python.org/3/whatsnew/3.6.html/1234")
    print (regular_v5)   # ['3', '3', '6']
    print (regular_v6)   # ['123']
    
    小d表示取数字0-9,大D表示不要数字,也就是出了数字以外的内容返回
    regular_v7 = re.findall(r"\D","https://docs.python.org/3/whatsnew/3.6.html")
    print (regular_v7)
    # ['h', 't', 't', 'p', 's', ':', '/', '/', 'd', 'o', 'c', 's', '.', 'p', 'y', 't', 'h', 'o', 'n', '.', 'o', 'r', 'g', '/', '/', 'w', 'h', 'a', 't', 's', 'n', 'e', 'w', '/', '.',
    '.', 'h', 't', 'm', 'l']

      

    “w”在正则里面代表匹配从小写a到z,大写A到Z,数字0到9
    regular_v8 = re.findall(r"\w","https://docs.python.org/3/whatsnew/3.6.html")
    print (regular_v8)
    #['h', 't', 't', 'p', 's', 'd', 'o', 'c', 's', 'p', 'y', 't', 'h', 'o', 'n', 'o', 'r', 'g', '3', 'w', 'h', 'a', 't', 's', 'n', 'e', 'w', '3', '6', 'h', 't', 'm', 'l']
    
    
    “W”在正则里面代表匹配除了字母与数字以外的特殊符号
    regular_v9 = re.findall(r"\W","https://docs.python.org/3/whatsnew/3.6.html")
    print (regular_v9)
    # [':', '/', '/', '.', '.', '/', '/', '/', '.', '.']
     
  • 相关阅读:
    UVA10163 Storage Keepers (动态规划)
    Uva12174 Shuffle(滑动窗口)
    上决╇ф人员分配问题 (背包问题)
    UVA
    UVALive
    poj1151 Atlantis (线段树+扫描线+离散化)
    poj2528 Mayor's posters (线段树+离散化)
    php 调用微信虚拟支付
    ptoto文件转换的java文件,报错 UnusedPrivateParameter
    redis 安装及启动时警告处理
  • 原文地址:https://www.cnblogs.com/mumianhuasayyes/p/15795086.html
Copyright © 2011-2022 走看看