zoukankan      html  css  js  c++  java
  • 6.re正则表达式

      1 import re
      2 import unicodedata
      3 
      4 s = "a00xoghasalexjkdfldhfjk"
      5 v = s.find("alex")
      6 print(v)
      7 
      8 k = "23412342353464565346"
      9 # 正则模糊匹配
     10 
     11 # print(re.findall("alex", s))
     12 # #  .是通配符(除了换行之外)
     13 # print(re.findall("a..x", s))
     14 # #  ^ (开头)和 $(结尾)
     15 # print(re.findall("^a..x", s))
     16 # print(re.findall("h..k$", s))
     17 # #  * (0-max) ;+(1,max) ; ?  (0,1)  贪婪匹配
     18 # b = "ccsrwrfdddddddddddkokosadkfod"
     19 # print(re.findall("d*", b))
     20 # print(re.findall("d+", b))
     21 # print(re.findall("alex*", "asdhfale"))  # 0-无穷大个
     22 # print(re.findall("alex+", "asdhfale"))  # 1-无穷大
     23 # print(re.findall("alex?", "asdhfalex"))  # 0-1个
     24 # print(re.findall("alex?", "asdhfale"))  # 0-1个
     25 #
     26 # # {}0-无穷大个 == * ; {1,} == + ; {6} 6次
     27 # # {} 可以带贪婪匹配
     28 # print(re.findall("alex{1,4}", "asdhfalexxx"))  # 1-4个
     29 # print(re.findall("alex{6}", "asdhfalexxx"))  # 必须是6个
     30 # # ? 惰性匹配
     31 # print(re.findall("alex*?", "asdhfalexxx"))
     32 # print(re.findall("alex+?", "asdhfalexxx"))
     33 #
     34 # # []字符集  中没有特殊符号(除了\-^)
     35 # print(re.findall("www[oldboy baidu]", "wwwbaidu"))
     36 # print(re.findall("x[ys]", "xyyszz"))
     37 # print(re.findall("s[zby]a", "xyyszasya"))
     38 # print(re.findall("s[zb,]a", "xyyszas,a"))
     39 #
     40 # print(re.findall("s[zb,]a", "xyyszas,a"))
     41 # print(re.findall("s[zb*]a", "xyyscas,a"))
     42 #
     43 # # -之间
     44 # print(re.findall("s[a-z]*", "sqaaaaerqwr"))
     45 # print(re.findall("s[a-z]*", "sqaaaaerqwr9"))  # [a-z] 之间
     46 #
     47 # print(re.findall("s[0-9]*", "s9qaaaaerqwr9"))  # [a-z] 之间
     48 # # ^非
     49 # print(re.findall("s[^a-z]", "sqaaaaerqwr9"))  # [a-z] 之间
     50 # # \转义
     51 # print(re.findall("\([^()]*\)", "12*(34*6+2-5*(2-1))"))
     52 # print(re.findall("\([^()]+\)", "12*(34*6+2-5*(2-1))"))
     53 #
     54 # # \d 【0-9】的数值
     55 # print(re.findall("\d+", "12*(34*6+2-5*(2-1))"))  # [0-9]
     56 # print(re.findall("\D+", "12*(34*6+2-5*(2-1))"))  # [^0-9]
     57 # print(re.findall("\s+", "hello world"), "ssss")  # \t\n\r\f\v 任何空白符
     58 # print(re.findall("\S+", "hello world"))  # [^\t\n\r\f\v]
     59 # print(re.findall("\w+", "hello world"))  # [0-9a-zA-Z_]
     60 # print(re.findall("\W", "hello world"))  # [^0-9a-zA-Z_]
     61 # print(re.findall("\b", "hello world")) # 空格,&,#
     62 #
     63 # print(re.findall(r"I\b", "hello I am world"))  #
     64 # print(re.findall("I\\b", "hello I am world"))  #
     65 #
     66 
     67 # print(re.findall("c\\\f", r"abcde\fgh"))
     68 # # | 或
     69 # print(re.findall("gh|f", "abcde|fgh"))
     70 # # () 分组
     71 # print(re.findall("(abf)*", r"abfabfabfh"))
     72 #
     73 # print(re.findall("(?P<name>\w+)", r"abfabfabfh"))
     74 #
     75 # #  search 找到第一个就返回一个对象(需要用group取出),,findall找到所有满足的结果放入列表
     76 #
     77 # print(re.search("\d+","23414afdfasf324fa"))
     78 # print(re.search("\d+","23414afdfasf324fa").group())
     79 # # 分组命名
     80 # print(re.search("(?P<name>[a-z]+)(?P<age>\d+)","23414alex324fa").group("name","age"))
     81 #
     82 # # match 成功返回对象,失败啥也不返回
     83 # print(re.match("\d+", "24dsd143f"))
     84 #
     85 # # split 分割
     86 # print(re.split(" ", "hello abc asf"))
     87 # print(re.split("[ |]", "hello abc|asf"))
     88 # print(re.split("[ab]", "hebllo abc|asf"))
     89 # # ["he","llo abc|asf"]->["he",“llo ","bc|asf"]->
     90 # # ["he","llo "," ","c|asf"]->["he","llo "," ","c|","sf"],
     91 # print(re.split("[ab]", "abc"))
     92 # # 替换
     93 # print(re.sub("\d+","A","dsfaf123aasf42112dfa"))
     94 #
     95 # print(re.subn("\d+","A","dsfaf123aasf42112dfa"))
     96 #
     97 # # 规则,书写规则
     98 # com = re.compile("\d+")
     99 # str1 = "qfaqs234rer1344"
    100 # print(com.findall(str1))
    101 #
    102 # com = re.compile("\d")
    103 # print(com.findall(str1))
    104 # # 迭代器
    105 # ite = com.finditer(str1)
    106 # # next(ite)
    107 # print(ite)
    108 # # ?: 去除优先级
    109 # print(re.findall("www\.(baidu|163)\.com","www.163.com"))  # 163
    110 # print(re.findall("www\.(?:baidu|163)\.com","www.163.com")) # www.163.com
    # print(re.search("abc|bcd", "abc"))  # search
    # print(re.search("a(bc)|bcd", "abc").group())
    # "\(9[^()]+\)"

    print(re.findall("(abc)+", "abcabcabc")) # 给整体添加匹配
    print(re.findall("abc+", "abcccabcabcfadfabc")) # ?:去除优先级,给c添加重复匹配
     
  • 相关阅读:
    重构与反思-<重构代码的7个阶段>有感
    Unity 自定义"=="操作符 [翻译来源blogs.unity3d,2014/05]
    Unity UGUI Button 无法点击问题一例
    [Lua性能] 小试验一例
    C# 循环中 直接索引 VS 缓存索引 性能测试
    Lua table直接索引VS缓存索引性能测试小示例
    大型网站架构系列:负载均衡详解(1)
    大型网站架构系列:电商网站架构案例(3)
    大型网站架构系列:电商网站架构案例(2)
    大型分布式网站架构技术总结
  • 原文地址:https://www.cnblogs.com/liuzhanghao/p/11064342.html
Copyright © 2011-2022 走看看