正则表达式:正则函数-正则转义

ernestwang 1 0

正则函数

  • re.match、re.search、re.findall、re.compile
  • 正则切割
    import re
    
    # string = '正则其实不难,但是学完之后,发现什么也写不出来,是这样吧'
    # print(string.split(','))
    
    c = re.compile(r'\d')
    string = '正则其实不难1但是学完之后2发现什么也写不出来3是这样吧'
    # 按照正则进行切割
    print(c.split(string))
    
    # 独立方式
    # print(re.split(r'\d', string))
  • 正则替换
    • 示例1:
    import re
    
    # s = 'If you do not leave me I will by your side until the life end'
    # print(s.replace(' ', '*'))
    
    s = 'If1you2do3not4leave5me6I7will8by9your0side1until3the5life7end'
    
    # 正则替换,可以指定次数
    s2 = re.sub(r'\d', ' ', s, 2)
    # 功能同上,返回一个元组 (替换结果,替换次数)
    # s2 = re.subn(r'\d', ' ', s)
    
    print(s2)
    • 示例2:
    import re
    
    s = 'If1you2do3not4leave5me6I7will8by9your0side1until3the5life7end'
    
    '''
    def tihuan(m):
        # 每次匹配都会调用一次,m就是匹配结果对象
        return m.group() * 2
    s2 = re.sub(r'\d', tihuan, s)
    '''
    # 替换目标字符换成函数:可以人为干预替换过程
    s2 = re.sub(r'\d', lambda m: str(int(m.group())*2), s)
    print(s2)

正则转义

  • 示例:
    import re
    
    '''
    python: \d      \\d     \\\d    \\\\d   r'\\d'
    re:     \d      \d      \\d     \\d     \\d
    匹配:   数字     数字     \d      \d      \d
    '''
    # 建议:写正则时前面添加 r 
    s = re.search(r'\\d', 'hello\dworld')
    
    if s:
        print(s.group())
  • 说明:
    • 匹配正则语法中的字符都需要进行转义
    • 书写正则时建议前面添加r,可以避免python对字符串的转义处理

练习:

  • 匹配手机号
  • 匹配邮箱
  • 匹配URL(http://www.baidu.com:80/index.html?id=3&page=5
  • 匹配IP地址(IPv4)
  • 把下划线命名(也叫蛇形命名,所有单词都是小写,中间通过下划线连接),转化为小驼峰命名法(第一个单词小写,其余所有单词首字母大写)。例如'go_to_next_page',转化后改写为'goToNextPage'。要求:用正则表达式替换

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~