zoukankan      html  css  js  c++  java
  • 正則函數

    re就正则,是有语法的字符串,用来匹配目标字符串的
    字符串匹配,根据你的规定书写字符串与目标字符串进行配对,如果能配对成功,代表目标字符串满足需求
     正则表达式:是一个可以同时制定多个规则的字符串
    # 单个字符
    improt re
    # re.I不区分大小写的匹配
    print(re.findall(r'a', 'abc123嘿嘿abcABC', flags=re.I))  # ['a', 'a', 'A']
    # a|b a或b单个字符
    print(re.findall(r'a|b', 'abc123嘿嘿abcABC', flags=re.I))  # ['a', 'b', 'a', 'b', 'A', 'B']
    # [a,b] a或,或b单个字符
    print(re.findall(r'[a,b]', 'abc,123嘿嘿abcABC', flags=re.I))  # ['a', 'b', ',', 'a', 'b', 'A', 'B']
    # [^ab]非a及非b的所有单个字符
    print(re.findall(r'[^ab]', 'abc,123嘿嘿abcABC'))  # ['c', ',', '1', '2', '3', '嘿', '嘿', 'c', 'A', 'B', 'C']
    # [a-z]所有单个小写字母   [A-Z]所有单个大写字母   [0-9]所有单个数字
    print(re.findall(r'[a-z]', 'abc,123嘿嘿abcABC'))  # ['a', 'b', 'c', 'a', 'b', 'c']
    print(re.findall(r'[0-9]', 'abc,123嘿嘿abcABC'))  # ['1', '2', '3']
    # 所有小写大写数字单个字符
    print(re.findall(r'[a-z]|[A-Z]|[0-9]', 'abc,123嘿嘿abcABC'))  # ['a', 'b', 'c', '1', '2', '3', 'a', 'b', 'c', 'A', 'B', 'C']
    print(re.findall(r'[A-Za-z0-9]', 'abc,123嘿嘿[abcABC'))  # ['a', 'b', 'c', '1', '2', '3', 'a', 'b', 'c', 'A', 'B', 'C']
    # 单个数字 == [0-9]
    print(re.findall(r'd', 'abc,123嘿嘿[abcABC'))  # ['1', '2', '3']
    # w == [A-Za-z0-9_]  将常见的汉字就理解为单个字母
    print(re.findall(r'w', 'abc,123嘿[_'))  # ['a', 'b', 'c', '1', '2', '3', '嘿', '_']
    # s 单个空:空格、制表符、换页符等
    # print('f
    
    	v')
    print(re.findall(r's', 'f
    
    	v '))  # ['x0c', '
    ', '
    ', '	', 'x0b', ' ']
    # D就是d的对立面:非数字的所有单个字符  W就是w的对立面  S就是s的对立面
    print(re.findall(r'D', 'abc,123嘿[_'))  # ['a', 'b', 'c', ',', '嘿', '[', '_']
    
    # 单个汉字
    print(re.findall(r'[u4e00-u9fa5]', 'abc,123嘿[_'))  # ['嘿']

    正則的匹配步驟

     就是匹配这个字符
    print(re.findall(r'\', 'adp\'))  # ['\', '\', '\']
    print(re.findall(r'\', r'adp\'))  # ['\', '\', '\', '\']
    
    
    
    print(re.findall(r'
    ', '
    '))  # ['
    ']
    print(re.findall(r'd', 'd'))  # []
    print(re.findall(r'\d', 'd'))  # ['\d']
    
    re_obj = re.compile(r'
    ')  # 转换成匹配换行符的正则对象
    res = re_obj.findall('
    ')
    print(res)  # ['
    ']
    
    re_obj = re.compile(r'\d')  # 转换成匹配 d 的正则对象
    res = re_obj.findall('d')
    print(res)  # ['\d']
    
    re_obj = re.compile(r'd')  # 转换成匹配 数字 的正则对象
    res = re_obj.findall('d')  # d不是数字
    print(res)  # []
    
    re_obj = re.compile(r'\n')  # 转换成匹配 
     的正则对象
    res = re_obj.findall('
    ')  # 代表换行,不能被匹配
    print(res)  # []
    res = re_obj.findall(r'
    ')  # 就代表
    ,能被匹配
    print(res)  # ['\n']

    匹配多個字符串

    import re
    # .会匹配除
    以为的所有单个字符
    print(re.findall(r'.', '*\_+=
     
    	'))  # ['*', '\', '_', '+', '=', ' ', '
    ', '	']
    
    # re.S会让.能匹配所有单个字符
    print(re.findall(r'.', '*\_+=
     
    	', re.S))  # ['*', '\', '_', '+', '=', '
    ', ' ', '
    ', '	']
    
    
    # 明确个数的重复
    # {n}
    print(re.findall(r'a', 'aaabbb'))  # ['a', 'a', 'a']
    print(re.findall(r'a{2}', 'aaabbb'))  # ['aa']
    print(re.findall(r'ab', 'aabbababab'))  # ['ab', 'ab', 'ab', 'ab']
    print(re.findall(r'a{2}b{2}', 'aabbababab'))  # ['aabb']
    print(re.findall(r'ab{2}', 'aabbababab'))  # ['abb']
    
    # {n,}  匹配n到无数个,题中最少匹配abb, 贪婪匹配 abbb 能被匹配为 abb 和 abbb,优先匹配多的
    print(re.findall(r'ab{2,}', 'ababbabbbabbbb'))  # ['abb', 'abbb', 'abbbb']
    
    # {,n} 匹配0到n个,ab{,2} 优先匹配abb,没有ab也行,如果还没有a也将就
    print(re.findall(r'ab{,2}', 'aababbabbbabbbb'))  # ['a', 'ab', 'abb', 'abb', 'abb']
    
    # {n,m} 匹配n到m个,ab{1,3} 优先匹配 abbb,再考虑abb, ab
    print(re.findall(r'ab{1,3}', 'aababbabbbabbbb'))  # ['ab', 'abb', 'abbb', 'abbb']
    
    # 特殊符号的重复
    # *: 匹配0到无数个
    print(re.findall(r'ab*', 'aababbabbbabbbb'))  # ['a', 'ab', 'abb', 'abbb', 'abbbb']
    # +: 匹配1到无数个
    print(re.findall(r'ab+', 'aababbabbbabbbb'))  # ['ab', 'abb', 'abbb', 'abbbb']
    # ?: 匹配0到1个
    print(re.findall(r'ab?', 'aababbabbbabbbb'))  # ['a', 'ab', 'ab', 'ab', 'ab']
    
    
    # 需求:匹配所以单词
    print(re.findall(r'[a-z]+', 'abc def hello print'))  # ['abc', 'def', 'hello', 'print']
    print(re.findall(r'[a-z]+', 'abc def hello print'))  # ['abc', 'def', 'hello', 'print']
    
    # 代表单词边界,用空格(字符串的结尾也包括)作为匹配规则
    print(re.findall(r'[a-z]*c', 'abc def hello print acb zc'))  # ['abc', 'ac', 'zc']
    print(re.findall(r'[a-z]*c', 'abc def hello print acb zc'))  # ['abc', 'zc']





  • 相关阅读:
    程序员常用字体(vs2008字体修改方案)
    Struts 与 Velocity 的集成
    CheckBox Button
    WINDOWS MOBILE winnet开发心得
    Change background color of a UIAlertView
    Windows Mobile 自定义控件(一)
    ZNLog
    获取磁盘空间大小
    iPhone开发:UIImage的一系列操作
    Windows Mobile 自定义控件(二)
  • 原文地址:https://www.cnblogs.com/duGD/p/10871756.html
Copyright © 2011-2022 走看看