zoukankan      html  css  js  c++  java
  • python正则表达式的基本使用

    1.正则表达式库文件:import re

    2.正则表达式常用符号

    . :匹配任意字符,'
    '除外
    a = 'zjw1324399'
    b = re.findall('z.',a)
    '''点号就相当于一个占位符'''
    print(b)
    
    Console:
    zj

    * :匹配前一个字符0次或无限次

    a = 'zzzjw1324399'
    b = re.findall('z*',a)
    print(b)
    
    Console:
    ['zzz', '', '', '', '', '', '', '', '', '', '']

    ? :  匹配前一个字符0次或一次

    a = 'zzzjw1324399'
    b = re.findall('z?',a)
    print(b)
    
    Console:
    ['z', 'z', 'z', '', '', '', '', '', '', '', '', '', '']

    .* :  贪心算法

    a = 'qwerxxixxxxlovexxxxyouxxabcd'
    b = re.findall('xx.*xx',a)
    print(b)
    
    Console:
    ['xxixxxxlovexxxxyouxx']

    .*?: 非贪心算法

    a = 'qwerxxixxxxlovexxxxyouxxabcd'
    b = re.findall('xx.*?xx',a)
    print(b)
    
    Console:
    ['xxixx', 'xxlovexx', 'xxyouxx']

    () :括号内的数据作为结果返回

    a = 'qwerxxixxxxlovexxxxyouxxabcd'
    b = re.findall('xx(.*?)xx',a)
    print(b)
    for every in b:
        print(every)
    
    Console:
    ['i', 'love', 'you']
    i
    love
    you

    d+ :匹配纯数字

    a = '''12345shangshandalaohu56789laohumeidadao'''
    b = re.findall('(d+)',a)
    print(b)
    
    Console:
    ['12345', '56789']

    然而值得注意的是以xx作为搜索符号,则所有的字符都必须有自己的搜索符,已经被检索过的搜索符并不算在下一个检索范围内

    如:

    a = 'qwerxxixxlovexxyouxxabcd'
    b = re.findall('xx(.*?)xx',a)
    '''love两旁的xx分别是i和you的后缀和前驱,故love并没有被检索到'''
    print(b)
    
    Console:
    ['i', 'you']

    若字符存在换行符,如:

    a = '''qwerxxi
    xxabcdxxlovexxabcdxxyouxxabcd'''
    b = re.findall('xx(.*?)xx',a)
    print(b)
    
    Console:
    ['abcd', 'abcd']

    若想忽略换行符的,看整体的字符串则需要方法re.S(使 . 的作用域包含 )

    a = '''qwerxxi
    xxabcdxxlovexxabcdxxyouxxabcd'''
    b = re.findall('xx(.*?)xx',a,re.S)
    print(b)
    
    Console:
    ['i
    ', 'love', 'you']

    3.正则表达式常用方法

    findall :匹配所有符合规律的内容

    Search :匹配并提取第一个符合规律的内容返回第一个正则表达式对象

    a = '''qwerxxixxabcdxxlovexxabcdxxyouxxabcd'''
    b = re.search('xx(.*?)xxabcdxx(.*?)xx',a).group(1)
    c = re.findall('xx(.*?)xxabcdxx(.*?)xx',a)
    print(b)
    print(c[0][1])
    '''0代表第一种相似的情况,1等同于.group(2)'''
    
    Console:
    i
    love
    a = '''qwerxxixxabcdxxlovexxabcdxxyouxxabcd'''
    b = re.search('xx(.*?)xxabcdxx(.*?)xx',a).group(2)
    '''group(3)会报错,因为group(n)代表匹配的括号数n'''
    print(b) Console: love

    Sub :替换符合规律的内容,返回替换后的值

    a = '''iloveyou'''
    hate = 'hate'
    b = re.sub('i(.*?)you','i%syou'%hate,a)
    '''%s可替换为%d代表int类型,可直接写数字'''
    print(b)
    
    Console:
    ihateyou
  • 相关阅读:
    MySQL学习之EXPLAIN执行计划详解及最佳实践
    MySQL学习之Mysql锁&事务隔离级别
    Mybatis学习之核心原理代码详解
    Mybatis学习之工作流程代码详解
    Mybatis学习之核心配置详解
    Mybatis学习之Mybatis Demo入门使用
    缓存穿透解决方案之布隆过滤器(Bloom Filter)原理及Guava中的实现
    Zookeeper学习之Jute序列化以及通信协议详解
    Zookeeper学习之Zab一致性协议
    Zookeeper学习之ZooKeeper源码分析
  • 原文地址:https://www.cnblogs.com/zjw1324399/p/14328111.html
Copyright © 2011-2022 走看看