zoukankan      html  css  js  c++  java
  • Python合集之Python正则表达式(四)

        1.使用search()方法进行匹配

    search()方法用于整个字符串中搜索第一个匹配的值。如果匹配成功,则返回match对象,否则返回None。search()方法的语法格式如下:

    re.search(pattern,string,[flags])
    参数说明:
    pattern:表示模式字符串,由要匹配的正则表达式转换而来
    string:表示要匹配的字符串
    flags:可选参数,表示标志位,用于控制匹配方式,如是否区分大小写。常用表志,请参考上一节。

    例如:搜索第一个以“mr_”开头的字符串,不区分字母大小写,代码如下:

    inport re
    pattern=r'mr_W+'
    string='MR_SHOP mr_shop'
    match=re.search(pattern,string,re.I)
    print(match)
    string='项目名称MR_SHOP mr_shop'
    match=re.search(pattern,string,re.I)
    print(match)

    执行结果:

    <_sre.SRE_Match object; span=(0,7),match='MR_SHOP'>
    <_sre.SRE_Match object; span=(4,11),match='MR_SHOP'>

    从上面的运行结果可以看出,search()方法不仅仅是在字符串的起始位置搜索,在其他位置有符合的匹配也可以进行搜索。

    2.使用findall()方法进行匹配

    findall()方法用于在整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回。如果匹配成功,则返回包含匹配结构的列表,否则返回空列表。findall()方法的语法如下:

    re.findall(pattern,string ,[flags])
    参数说明:
    pattern:表示模式字符串,由要匹配的正则表达式转换而来。
    string:表示要匹配的字符串
    flags:可选参数,表示标志位,用于控制匹配方式,如是否区分大小写字母,常用的标志请参考上一节

    例如:搜索已“mr_”开头的字符串,代码如下:

    inport re
    pattern=r'mr_W+'
    string='MR_SHOP mr_shop'
    match=re.findall(pattern,string,re.I)
    print(match)
    string='项目名称MR_SHOP mr_shop'
    match=re.findall(pattern,string,re.I)
    print(match)

    执行结果如下:

    ['MR_SHOP','mr_shop']
    [mr_shop]

    如果在指定的模式字符串中,包含分组,则返回与分组匹配的文本列表,例如:

    import re
    pattern=r'[1-9]{1,3}(.[0-9]{1,3}){3}'
    str1='127.0.0.1 192.168.1.66'
    match=re.findall(pattern,str1)
    print(match)

    上面代码执行的结果如下:

    ['.1','.66']

    从上面的结果中可以看出,并没有返回得到匹配的IP地址,这是因为在模式字符串中出现了分组,所以得到的结果是根据分组进行匹配的结果,即“(.[0-9]{1,3})”匹配的结果。如果想要获取整个模式字符串的匹配,可以将整个模式字符串使用一对小括号进行分组,然后再获取结果时,只取返回值列表的每个元素的第一个元素。代码如下:

    import re
    pattern=r'([1-9]{1,3}(.[0-9]{1,3}){3})'
    str1='127.0.0.1 192.168.1.66'
    match=re.findall(pattern,str1)
    for item in match:
        print(item[0])

    执行结果如下:

    127.0.0.1
    192.168.1.66

    花絮:

    本期的Python 字符串正则表达式就分享到这里,下期我们将继续分享Python字符串正则表达式的相关知识,感兴趣的朋友可以关注我。

    同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

  • 相关阅读:
    20210805-接口测试实战(持续更新中···)
    2021-07-06:关于自动化测试
    学习记录-更新时间-2021-04-09
    知识点@解决端口被占用的问题
    PS学习笔记
    JS去掉数组中重复的数
    验证码倒计时
    统计数组中出现最多的字母及次数
    验证码倒计时js
    小兔鲜css
  • 原文地址:https://www.cnblogs.com/a-mumu/p/14508857.html
Copyright © 2011-2022 走看看