美文网首页
python正则表达式2

python正则表达式2

作者: 闲云野鹤_23dd | 来源:发表于2021-03-29 15:54 被阅读0次

    python正则表达式2

    re.match()匹配多个

    re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
    字符串前面的r是为了防止字符转义的
    (.*) : 表达式1匹配到 are 截止
    (.*?) : 表达式2 匹配到第一个空格截止,?表示非贪婪匹配
    
    

    例子:

    import re
    
    line = "Cats are smarter than dogs"
    # .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符
    matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
    
    if matchObj:
       print ("matchObj.group() : ", matchObj.group())
       print ("matchObj.group(1) : ", matchObj.group(1))
       print ("matchObj.group(2) : ", matchObj.group(2))
    else:
       print ("No match!!")
    
    

    输出:

    matchObj.group() :  Cats are smarter than dogs
    matchObj.group(1) :  Cats
    matchObj.group(2) :  smarter
    
    

    表达式1 的匹配结果可以使用 matchObj.group(1)获取匹配值,其余表达式依次类推

    matchObj.group() 代表原 语句

    re.search()

    re.search 扫描整个字符串并返回第一个成功的匹配。
    使用语法 与 match类似

    语法:

    re.search(pattern, string, flags)
    
    
    • pattern: 正则表达式
    • string: 要匹配的字符串
    • flags: 可选参数,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等

    例子1:
    不管是否是在字符开头匹配,都可以匹配到

    import re
    
    print(re.search('软件', '软件测试工程师').span())  # 在起始位置匹配
    print(re.search('测试', '软件测试工程师').span())  # 不在起始位置匹配
    
    

    输出

    (0, 3)
    (11, 14)
    
    

    例子2:
    正则表达式匹配多个用法与 match一样

    import re
    
    line = "Cats are smarter than dogs"
    
    searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)
    
    if searchObj:
       print ("searchObj.group() : ", searchObj.group())
       print ("searchObj.group(1) : ", searchObj.group(1))
       print ("searchObj.group(2) : ", searchObj.group(2))
    else:
       print ("Nothing found!!")
    
    

    输出:

    searchObj.group() :  Cats are smarter than dogs
    searchObj.group(1) :  Cats
    searchObj.group(2) :  smarter
    

    相关文章

      网友评论

          本文标题:python正则表达式2

          本文链接:https://www.haomeiwen.com/subject/xvgdzktx.html