zoukankan      html  css  js  c++  java
  • 坑的可以呀re

    .findall()   直接匹配字母和数字

    元字符:. ^ $ * + ? {} [] ()

    import re
    print(re.findall("alex","slfdlslalexgsj"))
    >>>['alex']

    .  表示代表两个任意字符

    import re
    print(re.findall("a..x","slfd123salexgsj"))
    >>>['alex']
    import re
    print(re.findall("a..x","alexsdsadfxdlggsj"))
    >>>['alex', 'adfx']

    ^  表示从开头开始匹配

    import re
    print(re.findall("^a..x","alexsdsdlggsj"))
    >>>['alex']

    $  匹配结尾的位置

    import re
    print(re.findall("a..x$","alexsdsadfxdafhx"))
    >>>['afhx']
    import re       #不能匹配$符
    print(re.findall("a..x$","alexsdsadfxdafhx$"))
    >>>[]

    *  (0,+00)     匹配与前面的一个字符直到无穷次  没有的话匹配为“”      贪婪匹配

    1 import re
    2 print(re.findall("d*","aldddddddddfhx"))
    3 >>>['', '', 'ddddddddd', '', '', '', '']
    import re
    print(re.findall("^d*","ddddddddhhshfhx"))
    >>>['dddddddd']
    print(re.findall("alex*","sodale"))
    >>>['ale']

    +(1,+00)     匹配与前面的一个字符直到无穷次  必须要有一个            贪婪匹配

    import reprint(re.findall("alex+","sodalex"))
    >>>['alex']
    import re
    print(re.findall("alex+","sodale"))
    >>>[]

    ?(0,1)  最多匹配一个。

    import re
    print(re.findall("alex?","sfhalexxdj"))
    print(re.findall("alex?","sfhaledj"))
    >>>['alex']
    >>>['ale']

    {0,}==*

    {1,}==+

    {0,1}==?

    {6}==只匹配6个

    {1,6}==匹配1~6个

    import re
    print(re.findall("alex{0,3}","sfhalexxdj"))
    print(re.findall("alex{3}","sfalexxledj"))
    >>>['alexx']
    >>>[]

    ?  变成惰性匹配  

    1 import re
    2 print(re.findall("alex*?","sfhalexxdj"))
    3 print(re.findall("alex+?","sfalexxledj"))
    4 >>>['ale']
    5 >>>['alex']

    []   或的意思   括号里面 都 单独 拿出来匹配    括号内至少要有一个     [-]表示a~z   [^]表示非     []转意

    1 import re
    2 print(re.findall("www[oldboy baidu]","wwwbaidu"))
    3 >>>['wwwb']
    4 print(re.findall("q[a*z]","dfdfduqaa"))
    5 >>>['qa']
    6 print(re.findall("q[a-z]","dfdfqd13uq"))
    7 >>>['qd']
    8 print(re.findall("[^ads]","asda123123d"))
    9 >>>['1', '2', '3', '1', '2', '3']

    d  匹配任何十进制数;它相当于类 [0-9]。
    D 匹配任何非数字字符;它相当于类 [^0-9]。
    s  匹配任何空白字符;它相当于类 [ fv]。
    S 匹配任何非空白字符;它相当于类 [^ fv]。
    w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
    W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
      匹配一个特殊字符边界,比如空格 ,&,#等

      \ \\

     1 import re
     2 ret=re.findall('cl','abcle')
     3 print(ret)#[]
     4 ret=re.findall('c\l','abcle')
     5 print(ret)#[]
     6 ret=re.findall('c\\l','abcle')
     7 print(ret)#['c\l']
     8 ret=re.findall(r'c\l','abcle')
     9 print(ret)#['c\l']
    10 #-----------------------------eg2:
    11 #之所以选择是因为在ASCII表中是有意义的
    12 m = re.findall('blow', 'blow')
    13 print(m)
    14 m = re.findall(r'blow', 'blow')
    15 print(m

    1 gan = "\"
    2 print(gan)#  python解释器中字符串\,才表示一个
    3 print(re.findall("\\",gan)) #['\'],其实就是一个

    |   或的意思  左边或者右边

    import re
    print(re.findall(r'ka|b','sdjkalbsf'))
    >>>['ka', 'b']

    ()  先匹配元字符

    print(re.findall(r'(abc)+','abcabc'))
    >>>['abc']

    .search()     取第一组数据   分组之后要保留后面组的数据

    1 import re
    2 s = re.search('(?P<name>w+)(?P<name1>d+)j','ssf51sf515jjk')
    3 print(s.group())
    4 >>>ssf51sf515j
    5 print(s.group("name"))
    6 >>>ssf51sf51
    7 print(s.group("name1"))
    8 >>>5

    .match()  匹配开始的位置

    print(re.match("d+","454alexsd25d376d1df").group())
    >>>454

    .split()

    1 print(re.split(" ","hello abc def"))
    2 >>>['hello', 'abc', 'def']
    3 print(re.split("[ |]","hello abc|def"))
    4 >>>['hello', 'abc', 'def']
    5 print(re.split("[ab]","asdabcd"))
    6 >>>['', 'sd', '', 'cd']

    .sub()  替换  可以写匹配次数

    print(re.sub("d+","A","lshl655sg5s5g3"))
    >>>lshlAAAsgAsAgA
    print(re.sub("d+","A","lshl655sg5s5g3",2))
    >>>lshlAsgAs5g3

    .subn()   显示次数

    print(re.subn("d+","A","lshl655sg5s5g3"))
    >>>('lshlAsgAsAgA', 4)

    .compile()    把功能换成变量

    import re
    com=re.compile("d+")
    print(com.findall("ks23sd3gs5d"))
    >>>['23', '3', '5']

    .finditer()    变成可迭代 的对象

    import re
    ret=re.finditer("d","jjf561fg1515g")
    print(next(ret).group())
    print(next(ret).group())
    >>>5
    >>>6
  • 相关阅读:
    Java守护线程Daemon
    在for循环中创建双向链表
    Java泛型-官方教程
    大自然搬运工
    转 curl命令
    HashMap扩容问题及了解散列均分
    mysql 分组查询并取出各个分组中时间最新的数据
    CNN 模型复杂度分析
    Attention机制
    深度学习之目标检测
  • 原文地址:https://www.cnblogs.com/shizhengwen/p/6184420.html
Copyright © 2011-2022 走看看