zoukankan      html  css  js  c++  java
  • 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()搭配使用,提取指定内容,括号外非指定的内容可一同展示.

  • 相关阅读:
    谁说固态硬盘没容量?4TB诞生、明年8TB!
    微软.NET Framework 4.5.2 RTM正式版
    Chrome 应用推荐
    MS14-021: Internet Explorer 安全更新: 2014 年 5 月 1 日
    百视通与微软共同宣布9月在华发布Xbox One
    支付宝5月4日起将停止收款主页业务 保留三种收款方式
    Chrome 应用推荐
    为什么《舌尖上的中国》让你欲罢不能?
    求连续子数组的最大乘积
    损失函数与代价函数区别
  • 原文地址:https://www.cnblogs.com/tinglele527/p/14750321.html
Copyright © 2011-2022 走看看