当前位置 博文首页 > 文章内容

    python 的正则表达式

    作者: 栏目:未分类 时间:2020-07-20 11:00:56

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    学习过程中看到了这个例子,查了一下r'(.*) are (.*?) .*'的解释:

    实例 2:

    #!/usr/bin/python3
    
    import re
    
    line = "Cats are smarter than dogs";
    
    searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)
    
    if searchObj:
       print ("searchObj.group() : ", searchObj.group())
       print ("searchObj.group(1) : ", searchObj.group(1))
       print ("searchObj.group(2) : ", searchObj.group(2))
    else:
       print ("Nothing found!!")
    

    以上实例执行结果如下:

    searchObj.group() :  Cats are smarter than dogs
    searchObj.group(1) :  Cats
    searchObj.group(2) :  smarter

     

    r'(.*) are (.*?) .*'

    首先,这是一个baidu字符串,zhi前面的一个r表示字符串为非转义的原始字符串,让编译器忽略反dao斜杠,也就是忽略转义字符。但是这个字符串里没有反斜杠,所以这个r可有可无。


    (.*) 第一个匹配分组,.*代表匹配除换行符之外的所有字符

    (.*?)第二个匹配分组,.*?后面多个问号,代表非贪婪模式,也就是说只匹配符合条件的最少字符

    后面的一个.*  没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入匹配结果中。


    matchObj.group() 等同于 matchObj.group(0),表示匹配到的完整文本字符

    matchObj.group(1) 得到第一组匹配结果,也就是(.*)匹配到的

    matchObj.group(2) 得到第二组匹配结果,也就是(.*?)匹配到的


    因为只有匹配结果中只有两组,所以填3时会报错。