zoukankan      html  css  js  c++  java
  • Python正则表达式

    Python 正则表达式

    In [1]:
    import re
    pattern = re.compile(r'hello.*!')
    print(pattern)
    match = pattern.match('hello,World! how are you?')
    if match:
        print(match.group)
    
     
    re.compile('hello.*\!')
    <built-in method group of _sre.SRE_Match object at 0x000001BA179C2ED0>
    
     

    re.compile(strPattern[,flag]

     

    这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。 flag:匹配模式,取值可以使用按位或运算符‘|’表示同时生效,eg:re.l|re.M。

    #flag可选值:
        :re.l(re.IGNORECASE)忽略大小写(括号内是完整写法,下同)
        : re.S(DOTALL)点任意匹配模式,改变‘.’行为
        :re.L(LOCALE)使预定字符类w W  B s S取决于当前区域设定
        :re.U(UNICODE)使预定字符类 w W  B s S d D 取决于unicode定义的字符属性
        : re.X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释
        :re.M(MULTILINE)多行模式,该表‘^’和'$'的行为

    #两种方式等价

      regex_1 = re.compile(r"""d + #数字部分 . #小数点部分 d * #小数的数字部分""",re.X)

      regex_2 = re.compile(r"d+.d*")

     

    Match

     

    Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息。

    match属性:

    •string: 匹配时使用的文本。
    •re: 匹配时使用的Pattern对象。
    •pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
    •endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
    •lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
    •lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。
    In [2]:
    import re
    m = re.match(r'(w+) (w+)(?P<sign>.*)', 'hello World!')
     
    print ("m.string:", m.string)
    print ("m.re:", m.re)
    print ("m.pos:", m.pos)
    print ("m.endpos:", m.endpos)
    print ("m.lastindex:", m.lastindex)
    print ("m.lastgroup:", m.lastgroup)
     
    print ("m.group(1,2):", m.group(1, 2))
    print ("m.groups():", m.groups())
    print ("m.groupdict():", m.groupdict())
    print ("m.start(2):", m.start(2))
    print ("m.end(2):", m.end(2))
    print ("m.span(2):", m.span(2))
    print (r"m.expand(r'2 13'):", m.expand(r'2 13'))
    
     
    m.string: hello World!
    m.re: re.compile('(\w+) (\w+)(?P<sign>.*)')
    m.pos: 0
    m.endpos: 12
    m.lastindex: 3
    m.lastgroup: sign
    m.group(1,2): ('hello', 'World')
    m.groups(): ('hello', 'World', '!')
    m.groupdict(): {'sign': '!'}
    m.start(2): 6
    m.end(2): 11
    m.span(2): (6, 11)
    m.expand(r'2 13'): World hello!
    
     

    Pattern

     

    Pattern对象时一个编译好的正则表达式,通过Pattern提供的一系列方法可以对文本进行匹配查找。

    pattern不能直接实列化,必须使用re.compile()进行构造。

    Pattern提供几个可读属性用于获取表达式的相关信息:

      pattern:编译时用的表达式字符串

      flags:编译时用的匹配模式。数字形式

      groups:表达式中分组的数量

      groupindex:以表达式中有别名的组的别名为键、以该组对应的编号为值的字典,没有别名的组不包含在内。

    In [3]:
    import re
    p = re.compile(r'(w+)(w+)(?P<sign>.*)',re.DOTALL)
    
    print("p.pattern:",p.pattern)
    print("p.flags:",p.flags)
    print("p.groups:",p.groups)
    print("p.groupindex",p.groupindex)
    
     
    p.pattern: (w+)(w+)(?P<sign>.*)
    p.flags: 48
    p.groups: 3
    p.groupindex {'sign': 3}
    
    Monkey
  • 相关阅读:
    网站测试中如何做好安全性测试
    Web安全性测试总结
    文件上传验证绕过技术总结
    Burp Suite使用介绍
    Burpsuite教程与技巧之HTTP brute暴力破解
    burpsuite绕过本地javascripte上传文件
    文件上传漏洞演示脚本之js验证
    上传验证绕过
    Burp Suite详细使用教程
    关于post和get传递参数的区别
  • 原文地址:https://www.cnblogs.com/monkeyT/p/10660822.html
Copyright © 2011-2022 走看看