zoukankan      html  css  js  c++  java
  • 正则表达式-常用函数的基本使用

    常用函数有

    re.match()、re.search() 、re.sub()、compile()、findall()、finditer()、split()

    re.match()  匹配字符串开头,常用来判断数据是否满足我的正则要求。

    成功返回一个match对象,不成功返回空。

    >>> import re
    >>> rc = re.compile(r"www.+")
    >>> rc.match('www.com wxw.cn')
    <re.Match object; span=(0, 14), match='www.com wxw.cn'>
    >>> rc.match('wxw.cn www.com')
    >>>
    >>>

    re.search() 匹配整个字符串,判断数据时候包含我的正则数据

    >>> rc.search('wxw.cn www.com')
    <re.Match object; span=(7, 14), match='www.com'>
    >>> rc.search('wxw.cn www.com wxw.org www.cn')
    <re.Match object; span=(7, 29), match='www.com wxw.org www.cn'>
    >>>

    作比较

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import re
    
    st = 'Monday Tuesday Wednesday Thursday Friday Saturday Sunday'
    rc = r'sunday'
    
    #match 进行匹配
    rcm = re.match(rc,st,re.I)
    #re.I忽略大小写
    if rcm:
        print(rcm.group())
    else:
        print("match don't is Sunday")
    
    #search 进行匹配查找
    rcs = re.search(r'sunday',st,re.I)
    if rcs:
        print(rcs.group())
    else:
        print("search don't is Sunday")

    re.sub() 检索和替换

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import re
    
    #re.sub(pattern, repl, string, count=0, flags=0)
    
    st = '这#是#一#个#很*寂*寞*的#天#,#下#着#有#些#伤@心@的@雨@'
    
    #将这个字符串里的特殊符号替换成空,也就是删掉的意思。
    #定义正则
    pat = r'[#*@]'
    
    music = re.sub(pat,'',st)
    print(music)


    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import re
    
    #re.sub(pattern, repl, string, count=0, flags=0)
    
    #repl 也可以是一个函数
    
    str ='主板 cpu computer 电池 mouse 键盘'
    pat = r'[a-z]'
    #将str中的小写英文字母全都转换为大写
    
    def chupper(matched):
        value = matched.group()
        return value.upper()
    
    res = re.sub(pat,chupper,str)
    print(res)

    compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

    >>> import re
    >>> pac = re.compile('[a-z]',re.I)
    >>> st = 'A1b2c3d4e5f7g8h9i0g1k2l3m4n5'
    >>> m = pac.match(st)
    >>> m
    <re.Match object; span=(0, 1), match='A'>
    >>> m.group()
    'A'
    >>> m.start()
    0
    >>> m.end()
    1
    >>> m.span()
    (0, 1)
    >>>
    findall

    在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

    注意: match 和 search 是匹配一次 findall 匹配所有。

    findall(string[, pos[, endpos]])


    re.finditer
    和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
    >>> rec = re.compile(r'D')
    >>> iters = rec.finditer('abcd1234efg567hig')
    >>> for value in iters:
        print(value.group(),end="")
    
    abcdefghig
    >>>

    split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:

    re.split(pattern, string[, maxsplit=0, flags=0])
    >>> rec = re.compile(r'[.]')
    >>> st = '192.168.1.1'
    >>> recs = rec.split(st)
    >>>
    >>> recs
    ['192', '168', '1', '1']
    >>>

    flags:

    修饰符	描述
    re.I	使匹配对大小写不敏感
    re.L	做本地化识别(locale-aware)匹配
    re.M	多行匹配,影响 ^ 和 $
    re.S	使 . 匹配包括换行在内的所有字符
    re.U	根据Unicode字符集解析字符。这个标志影响 w, W, , B.
    re.X	该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

    正则理解起来不难,就是感觉容易遗忘,这一段学快点,不要浪费时间,下去多做练习。


    读书和健身总有一个在路上

  • 相关阅读:
    VMware虚拟机下Centos8 设置静态IP地址
    maven插件使用及dockerfile插件多模块下打包
    Docker开启远程访问、IDEA Docker 连接 linux 上的 Docker
    Docker打包错误:Failed to execute goal com.spotify:docker-maven-plugin:1.2.0:build (default-cli) on project security
    Idea 中 Docker 的 log 乱码
    oracle11G 已开启监听,但远程连接依旧无监听解决过程
    sql server特殊功能:临时表是否存在
    sql server object_id()的应用
    sql server系统表详细说明
    SQL行转列汇总
  • 原文地址:https://www.cnblogs.com/Renqy/p/12793632.html
Copyright © 2011-2022 走看看