zoukankan      html  css  js  c++  java
  • python正则表达式

    以前用php做数据采集,做了有小半年,所以对php的正则用法还是很熟悉,转用python后,流程还是差不多,只是python的相关函数用法和php不一样。

    php正则匹配函数倒是很简单,preg_match,preg_match_all,preg_replace, 直接就可以拿来用了,是否使用贪婪模式,是否区分大小写直接在正则表达式里指明。

    再来看看python

    import re
    
    # 匹配开头结尾
    str="efg fwef  safeasafsdf   kkk"
    reg=r"fg(.+)kkk"
    
    # 要把正则表达式编译一下, 其实不编译也行, 直接 re.match(正则表达式,要匹配的对象)就能实现,
    # 但是为什么要编译(cmopile)呢?因为如果很多地方用到这个匹配的话,可以提高效率
    pat
    =re.compile(reg)
    # match 这里有个特点那就是他是从开头开始匹配,相当于默认在匹配式开头加了 ^ ,这里匹配式相当于 ^fg(.+)kkk
    m
    =pat.match(str) #没有结果 if m: print m.group() # search和match类似,但是他并不会从开头开始 m=pat.search(str)
    #有结果
    if m: print m.group()
    # match和search 可以用在验证字符数据的地方(例如验证邮箱,电话等) 或 无需得到括号里匹配内容的结果里。

    # findall可以以元组的形式匹配返回匹配内容
    # 如果返回的结果有中文,要进一步遍历之后才能正确显示中文
    str
    ="efg fwef safeasafsdf kkk efg hello 你好啊 kkkefg 我很好 kkk efg 卡卡 " reg=r"Fg(.+?)kkk" pat=re.compile(reg,re.I|re.S) m=pat.findall(str) print m # 匹配是个有效邮箱 email='1232_abcw+aw@qq.com'
    # w 表示数字字母和下滑线,也叫字符型,后面的re.I 表示忽略大小写,re.S 表示.代表任意字符(这里不用加,只是做示范) pat=re.compile(r'^[w|+]+@[w|.]+$',re.I|re.S) m=pat.search(email) if m: print 'this is a email' print m.group()
  • 相关阅读:
    HP SAN Switch參考文檔地址
    hp,Qlogic,Brocade光纖卡查看方式
    使用nbrbutil工具來處理requested media id is in use, cannot process request
    NBU expired Media,Media ID not found in EMM database
    訪問索引的方法
    Linux光纖卡配置,磁盤掛載,多路徑設置
    Linux 6.5網卡配置
    Oracle ASM
    NBU bplabel命令擦除磁帶數據
    鼠标悬浮显示完整信息
  • 原文地址:https://www.cnblogs.com/luckylihuizhou/p/6693543.html
Copyright © 2011-2022 走看看