• python 正则表达式findall和search用法


      python自带了正则表达式的模块,使用这个模块可以非常方便地通过正则表达式提取有规律的信息;

    1.使用findall函数

    findall的函数原型:

    re.findall(pattern,string,flags=0)

    pattern 表示正则表达式,string表示原来的字符串,flags表示一些特殊功能的标志(例如:忽略大小写,忽略换行符)常省略

    步骤:

    import re
    content = "我的微博账户是: 1234567,QQ 密码是:33445566,银行卡密码是:888888,Gitthub密码是:999abc999,帮我记住他们"
    comp = ":(.*?),"
    comp_name="(我的.*?)d"
    passwd_list = re.findall(comp,content)
    name_list = re.findall(comp_name,content)
    account_passwd = re.search('账户是:(.*?),...密码是:(.*?),',content)
    # print(passwd_list)
    # print("我的密码分别是{}".format(passwd_list))
    print(name_list)
    # print(account_passwd)
    # print(passwd_list)
    # print(account_passwd.group())
    

     

    2.search函数

    search()的用法和findall()的用法一样,但是search()只会返回第一个满足要求的字符串.一旦找到符合要求的内容,它就会停止查找.

    search()函数原型:

    re.search(pattern,string,flags=0)  和findall()一样

    对于结果,如果匹配成功,则是一个正则表达式的对象;如果没有匹配到的任何数据,就是None.如果需要得到匹配的结果,则需要通过.group()这个方法来获取里面的值.

    小结:

    findall()和search()函数的用法基本差不多;

    区别:

    1.findall()会把匹配到的结果全部展示出来,而往往我们编写程序的时候,需要对匹配的结果进行筛选,这个时候

    search()搭配的group()功能就非常有用了;此时如果用的是findall()还需要另外设置程序从结果中筛选符合要求的.而用search()搭配group()就能准确地定位到目标.

    2.另外用findall()和search()的匹配结果也有所不同,例如上面示例代码:

    如果把参数:

    '账户是:(.*?),...密码是:(.*?)传给findall pattern   得出的结果是:
    [(' 1234567', '33445566')]

    而用search()同样的参数,匹配的结果是这样的:
    <re.Match object; span=(4, 33), match='账户是: 1234567,QQ 密码是:33445566,'>
    调用group() print(account_passwd.group()) 则是:
    "账户是: 1234567,QQ 密码是:33445566,""

    我们很容易发现,findall()匹配的结果中,只体现了小括号()中要提取的内容,

    而用search()会加上,我们设定在小括号()外的内容,因此当我们需要加入说明文字的时候,这个时候用search就显得非常的有优势了;

    识记要点:

    findalll() 把所匹配结果展示到列表中,提取内容不包括括号指定.

    search()常与group()搭配使用,提取指定内容,括号外非指定的内容可一同展示.

  • 相关阅读:
    11. Container With Most Water
    9. Palindrome Number
    375. 猜数字大小 II leetcode java
    leetcode 72 编辑距离 JAVA
    73. 矩阵置零 leetcode JAVA
    快速排序 JAVA实现
    63. 不同路径 II leetcode JAVA
    重写(override)与重载(overload)
    62 不同路径 leetcode JAVA
    leetcode 56 合并区间 JAVA
  • 原文地址:https://www.cnblogs.com/tinglele527/p/14750321.html
Copyright © 2020-2023  润新知