• 正则表达式re模块


    #  在线调试工具:  tool.oschina.net/regex/#
    import re
    #w匹配字母数字下划线   W:非字母数字下划线
    # print(re.findall('w','as213df_*|d'))  #['a', 's', '2', '1', '3', 'd', 'f', '_', 'd']
    # print(re.findall('W','as213df_*|d'))  #['*', '|']
    # print(re.findall('awb','a_b a3b aEb a*b'))  #['a_b', 'a3b', 'aEb']
    
    #2、s匹配空字符,  S匹配非空字符
    # print(re.findall('s','a b
    c	'))  #[' ', '
    ', '	']
    # print(re.findall('S','a b
    c	'))  #['a', 'b', 'c']
    
    
    #3.d 匹配数字   D 匹配非数字
    # print(re.findall('d','a123bddfe4'))  #['1', '2', '3', '4']
    # print(re.findall('D','a123bdd@fe4'))  #['a', 'b', 'd', 'd', '@', 'f', 'e']
    
    #4、
    匹配换行符   	 匹配制表符
    # print(re.findall('
    ','a12
    3bd
    dfe4'))  #['
    ', '
    ']
    # print(re.findall('	','a12	3b	dd	fe4')) #['	', '	', '	']
    
    #5、^  只匹配字符串的开头是否以某某开头,如果是则匹配到,不是为空
    # print(re.findall('h','hello egon hao123'))   #['h', 'h']
    # print(re.findall('^h','hello egon hao123'))  #['h']
    
    
    #6、  str$   是否以某某结尾,注意这里是放在要匹配的字符的右边,……是放在左边
    # print(re.findall('3','hello e3gon hao123')) #['3', '3']
    # print(re.findall('3$','3hello egon hao123')) #['3']
    
    #7、 . 点  :匹配任意一个字符ac也不能匹配,
    换行符也不能匹配,但是加上re.S就能匹配出换行符
    # print(re.findall('a.c','abc a1c a*c a|c abd aed ac a
    c'))  #['abc', 'a1c', 'a*c', 'a|c']
    # print(re.findall('a.c','abc a1c a*c a|c abd aed ac a
    c',re.S)) #['abc', 'a1c', 'a*c', 'a|c', 'a
    c']
    
    #8、[]匹配任意一个字符。相比点的是可以指定需要匹配哪个字符【12】就是匹配出1或者2的
        #[1,2
    ] :就是匹配出1或者是逗号或者是2或者是换行符这四个字符
        #【】可以匹配范围【0-9】:匹配从0到9   。-放到中间就是范围,放到其他地方就是符合
        #[^0-9]:^放到【】里面代表是非的意思即只要不是0-9的都匹配出来,不是开头的意思
    # print(re.findall('a[1,2]c','a2c a1c a*c a|c a21c a2d ac a
    c'))  #['a2c', 'a1c']
    # print(re.findall('a[0-9]c','a2c a1c a*c a|c a21c a2d ac a
    c')) #['a2c', 'a1c']
    # print(re.findall('a[0-9a-zA-Z]c','aHc a1c a*c a|c a21c a2d ac a
    c')) #['aHc', 'a1c']
    
    #9、 *+?{n,m}  都是重复匹配的意思
    
    #  *代表左边的字符出现0次或无穷次
    # print(re.findall('ab*','acccc')) #['a']
    # print(re.findall('ab*','abbbb')) #['abbbb']
    
    #  + 代表左边字符出现一次或无穷次
    # print(re.findall('ab+','acccc')) #[]
    # print(re.findall('ab+','abbbb')) #['abbbb']
    # print(re.findall('ab+[123]','abbb1'))  #['abbb1']
    
    #  {n,m} 匹配左边的字符出现n次到m次
    # print(re.findall('ab{3}','abb abbb abbbb')) #['abbb', 'abbb']
    # print(re.findall('ab{3,4}','abb abbb abbbbb'))  #['abbb', 'abbbb']
    # print(re.findall('ab{3,}','abb abbb abbbbb'))  #i匹配3次到无穷次
    
    # ? :?左边的字符匹配0次或1次
    # print(re.findall('ab?c','ac abc aec a1c'))  #['ac', 'abc']
    
    
    #10、 .*  点*   贪婪匹配,匹配任意多个字符
    # print(re.findall('a.*c','ac abc adfdc')) #只有一个结果  ['ac abc adfdc']
    
    #11、 。*? 非贪婪匹配  :这里的?是转义的意思,转义为非贪婪匹配
    # print(re.findall('a.*?c','ac abc adfdc'))  #从左到右匹配到算是一次匹配成功['ac', 'abc', 'adfdc']
    
    
    #12、()  匹配括号里面的内容,表示分组
    # print(re.findall('compan(y|ies)','Too many companies have gone ban'))  #['ies']
    # print(re.findall('compan(?:y|ies)','Too many companies have gone ban')) #['companies']
    #这里的?:语法,转义匹配出company或者companies
    # ?:打印出真实的结果,不加则只打印出括号内的字符
    # print(re.findall('ab+123','ababab123'))  #['ab123']
    # print(re.findall('(ab)+123','ababab123'))  #['ab']
    # print(re.findall('(?:ab)+123','ababab123')) #['ababab123']
    
    
    # print(re.findall('a\c','ac'))  #匹配不到  []
    # print(re.findall('a\\c','ac'))  #['a\c']
    # ##r代表告诉解释器使用rawstring,即原生字符串,把我们正则内的所有符号都当普通字符处理,不要转义
    # print(re.findall(r'ac','ac'))  #[]
    # print(re.findall(r'a\c','ac')) #['a\c']
    

     

    参考博客:http://www.cnblogs.com/linhaifeng/articles/6384466.html

  • 相关阅读:
    【8-21】java学习笔记03
    【每天一点点】
    【8-20】java学习笔记02
    【8-19】java学习笔记01
    【8-18】JS学习01
    【8-17】HTML测试
    Selenium之WebDriverWait
    Selenium之XPATH定位方法
    Fiddler用法
    微服务架构系统的测试
  • 原文地址:https://www.cnblogs.com/wangkc/p/6938427.html
Copyright © 2020-2023  润新知