• python之正则表达式


    在程序中我们可以使用正则表达式匹配出符合规则的字符串数据。

    正则表达式的元字符:

    1.匹配单个字符的元字符:

    元字符  功能
    . 匹配一个除 外的任意字符
    [] 匹配[]中列举出来的字符,只要在[]中存在则匹配成功
    d 匹配数字,即0-9
    D 匹配非数字,即除0-9之外的所有字符
    s 匹配空白,即空格、 、 (回到当前行的行首)、f(分页符)、
    S 匹配非空白字符
    w 匹配非特殊字符,即0-9、a-z、A-Z,_和汉字
    W 匹配特殊字符,除0-9、a-z、A-Z,_和汉字外的字符
     匹配字符串中空格后的第一个非特殊含义的字符

    2.匹配多个字符的限定符:

    限定符 功能
    * 匹配任意一个出现0次或多次的字符
    + 匹配任意一个出现一次或多次的字符,即至少出现1次的字符
    匹配一个出现1次或0次的字符
    {m} 匹配一个出现m次的字符
    {m,} 匹配一个至少出现m次的字符
    {m,n} 匹配一个出现次数在m到n之间的字符

    3.匹配开头和结尾的元字符:

    元字符 功能
    ^ 匹配以指定字符串开头的字符串
    $ 匹配以指定字符串结尾的字符串

    4.匹配分组的元字符:

    元字符 功能
    | 匹配满足|左右两边的任意一个表达式的字符串
    () 将括号中的字符作为一个分组
    um 通过num引用分组,分组顺序从第一个左括号开始为1,依次递增
    (?P<name>) 给分组起一个别名
    (?P=name) 通过别名引用分组

    5.正则表达式的高阶函数:

    方法 功能
    match() 从头开始匹配符合规则的字符串
    search() 查找第一个符合匹配规则的子串
    findall() 查找出所有符合匹配规则的子串
    split() 将字符串以指定的匹配规则进行分割,
    并返回一个分割后的列表
    sub()  通过匹配规则找到字符串中符合规则的子串,
    并将子串替换成指定的新字符串

    6.正则表达式高阶函数的应用:

    1.match()函数从头开始匹配,如果第一个字符不符合规则那么久匹配不到数据,

    代码如下:

    import re
    
    print(re.match(r'd.', '123124512').group())
    print(re.match(r'd*', '123124512').group())
    print(re.match(r'd+', '12312').group())
    print(re.match(r'D+', '```12312').group())
    print(re.match(r'w+', '```12312'))
    print(re.match(r'W+', '```12312').group())

    2.search()函数从头开始查找出第一个符合规则的子串,

    代码如下:

    print(re.search(r'[a-zA-Z]+', '1abc2ABC').group())
    print(re.search(r'[a-zA-Z]{3}', '1abc2ABC').group())

    3.findall()函数从头开始找出所有符合规则的子串,

    代码如下:

    print(re.findall(r'[a-zA-Z]+', '1abc2ABC3def4DEF'))

    4.split()函数将字符串以指定规则进行分割,

    代码如下:

    print(re.split(r':|.', 'http://www.baidu.com'))

    5.sub()函数匹配字符串中符合规则的子串并使用新的字符串进行替换,

    代码如下:

    print(re.sub(r'[A-D]+', '你好啊', '1anbc2ADC3456'))
    该花的钱要花,该吃的饭要吃。
  • 相关阅读:
    4种定位的区别
    tab切换插件
    CPU的cache知识
    linux free命令详解
    关于登录linux时,/etc/profile、~/.bash_profile等几个文件的执行过程
    职业规范(运维)
    数据库的横表和纵表
    Linux下的xargs的用法
    LINUX ulimit命令
    防火墙并发连接数
  • 原文地址:https://www.cnblogs.com/chao666/p/12061809.html
Copyright © 2020-2023  润新知