zoukankan      html  css  js  c++  java
  • 正则表达式的总结

    首先向大家强烈推荐一个在线检测正则表达式的链接:Online regex tester and debugger: PHP, PCRE, Python, Golang, JavaScript

    +、?、*、{min,max}这四种数量匹配,单独使用时,他们就是贪婪模式(会回溯)。如果在他们后面加上一个?,就变为了懒惰模式(会回溯)。如果在他们后面加上一个+,就变为了独占模式(不会回溯)。

    易错点:千万不要在正则表达式中加入空格!!!

    以下是常用的正则用法:(对于复杂的正则表达式,要涉及一些贪婪模式、懒惰模式、独占模式以及回溯)

    import re
    
    print(re.match("^Chen", "Chenronghua"))
    print(re.match("^Chen", "Chenronghua").group())
    if "hen" in "Chenronghua":
        print("000")   
    print(re.match("^Chend", "Chen321ronghua123").group())
    print(re.match("^Chend+", "Chen321ronghua123").group())
    print(re.match("^.+d", "Chen321ronghua123").group())
    # re.match是从字符串开头匹配,所以它默认是从第一个字符匹配,即^没有用;当返回None时,调用group时会报错。
    print(re.match("^r.+", "Chen321ronghua")) #这个时匹配不到的
    ###############################################################
    
    # re.research是从整个文本里进行搜索
    # 其中^表示在整个字符串中的开头,$表示整个字符串中的结尾
    # 他会尽可能的取,一直到没有符合的为止
    # 转义符的意思就是告诉解释器,你不要解释它,就把他当成一个简单的字符就行了
    print(re.search("r.+a", "Chen321ronghua123").group())
    print(re.search("r[a-z]+a", "Chen321ronghua123a").group())
    print(re.search("r[a-zA-Z]+a", "Chen321rongHaaaaaaaua123a").group())
    # #是匹配?前一个字符一次或零次
    print(re.search("aaa2?", "aaa2lex"))
    print(re.search("a?", "lex"))
    print(re.search("[0-9]{3}", "aa1a2le345x").group())
    print(re.search("[0-9]{1,3}", "aa1a2le345x").group())
    print(re.search("abc{2}", "222abccc").group())
    print(re.search("abc|ABC", "ABC22abc").group())
    print(re.search("(abc){2}(||=){2}", "abcabc||=||=").group())
    # s匹配空白符、	、
    、
    
    print(re.search("s+", "abc	 
    aa"))
    # 一种装逼的应用
    print(re.search("(?P<id>[0-9]+)(?P<uid>[a-zA-Z]+)", "acs1233adcer#").groupdict())
    print(re.search("(?P<id>[0-9]+)(?P<uid>[a-zA-Z]+)", "acs1233adcer#").group('id'))
    print(re.search("(?P<place>[0-9]{6})(?P<birthday>[0-9]{8})", "158693199910223875").groupdict())
    
    #############################################################
    print(re.findall("abc|ABC", "ABC23abc"))
    # re.findall的作用是找出所有符合条件的内容
    print(re.findall("[0-9]{1,3}", "aa1a2le345x"))
    print(re.findall("[0-9]{3}", "aa1a2le3425x"))
    print(re.findall("[0-9]{1,3}", "aa1a2le3425x"))
    
    ##################################################################
    # re.split是将字符串分割成多个,放在列表中
    print(re.split("[0-9]", "ad24ghr5t622ee")) #这样会有空的元素出现,加上+就可以了
    print(re.split("[0-9]+", "ad24ghr5t622ee"))
    
    ##################################################################
    # re.sub将匹配到的值替换成新值,它没有group函数
    print(re.sub("[0-9]+", "|", "34dg4ggdrg54v"))
    # 如果我想要将匹配得到的前两个进行替换,得加一个参数count
    print(re.sub("[0-9]+", "|", "34dg4ggdrg54v", count=2))
  • 相关阅读:
    Fiddler基础与HTTP状态码
    Fiddler与F12设置代理
    人和机器猜拳游戏
    ng-model 取不到值
    git的使用
    笔记
    INSPIRED启示录 读书笔记
    INSPIRED启示录 读书笔记
    INSPIRED启示录 读书笔记
    INSPIRED启示录 读书笔记
  • 原文地址:https://www.cnblogs.com/czz0508/p/10563875.html
Copyright © 2011-2022 走看看