• Python学习笔记模式匹配与正则表达式之用正则表达式匹配更多模式


      随笔记录方便自己和同路人查阅。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      既然你已知道用 Python 创建和查找正则表达式对象的基本步骤,就可以尝试一些更强大的模式匹配功能了。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      1、利用括号分组,示例代码:

    #! python 3
    # -*- coding:utf-8 -*-
    # Autor: Li Rong Yang
    import re#用 import re 导入正则表达式模块。
    phoneNumregex = re.compile(r'(d{3})-(d{3}-d{4})')#使用括号进行分组。
    text = phoneNumregex.search('My number is 415-555-4242')#向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。
    print(text.group(1))#调用 Match 对象的 group()方法,返回分组1的内容。
    

      运行结果:

      2、用管道匹配多个分组,示例代码:

      字符|称为“管道”。希望匹配许多表达式中的一个时,就可以使用它。例如,正则表达式 r'Batman|Tina Fey'将匹配'Batman'或'Tina Fey'。

    如果 Batman 和 Tina Fey 都出现在被查找的字符串中,第一次出现的匹配文本,将作为 Match 对象返回。

      3、用问号实现可选匹配,示例代码:

      有时候,想匹配的模式是可选的。就是说,不论这段文本在不在,正则表达式都会认为匹配。字符?表明它前面的分组在这个模式中是可选的。

       4、用星号匹配零次或多次,示例代码:

      *(称为星号)意味着“匹配零次或多次”,即星号之前的分组,可以在文本中出Python 编程快速上手——让繁琐工作自动化现任意次。它可以

    完全不存在,或一次又一次地重复。

      对于'Batman',正则表达式的(wo)*部分匹配 wo 的零个实例。对于'Batwoman',(wo)*匹配 wo 的一个实例。对于'Batwowowowoman',(wo)*匹配

    wo 的 4 个实例。

      如果需要匹配真正的星号字符,就在正则表达式的星号字符前加上倒斜杠,即*。

      5、用加好匹配一次或多次,示例代码:

      *意味着“匹配零次或多次”,+(加号)则意味着“匹配一次或多次”。星号不要求分组出现在匹配的字符串中,但加号不同,加号前面的分组必须“至少

    出现一次”。这不是可选的。

      正则表达式 Bat(wo)+man 不会匹配字符串'The Adventures of Batman',因为加号要求 wo 至少出现一次。
      如果需要匹配真正的加号字符,在加号前面加上倒斜杠实现转义:+。

      6、用花括号匹配特定次数,示例代码:

      

    #! python 3
    # -*- coding:utf-8 -*-
    # Autor: Li Rong Yang
    import re#用 import re 导入正则表达式模块。
    phoneNumregex = re.compile(r'(d{3})-(d{3}-d{4})')#使用括号进行分组。
    text = phoneNumregex.search('My number is 415-555-4242')#向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。
    print(text.group(1))#调用 Match 对象的 group()方法,返回分组1的内容。
    
    
    phoneNumregex = re.compile(r'(ddd)-(ddd-dddd)')#使用括号进行分组。
    text = phoneNumregex.search('My number is 415-555-4242')#向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。
    print(text.group(1))#调用 Match 对象的 group()方法,返回分组1的内容。
    

      运行结果:

      根据结果可以看出,两段代码效果完全一致,花括号只是匹配相同内容的次数。

  • 相关阅读:
    进程DLL注入
    静态链接库LIB
    利用MoveFileEx实现程序的隐藏、自启动与自删除
    QueueUserApc实现DLL注入的测试
    简单说说SSDT
    ural 1521. War Games 2 约瑟夫环 SBT实现
    次小生成树 (附:poj1679)
    hoj 1138 LC Display
    hoj 3029 Dictionary 模拟队列
    hoj 2578 Super_Stack 模拟栈
  • 原文地址:https://www.cnblogs.com/lirongyang/p/9574667.html
Copyright © 2020-2023  润新知