zoukankan      html  css  js  c++  java
  • python之re模块

    #正则表达式是用来干嘛的?
    #匹配 字符串
    # s="hello world"
    # print(s.find("llo"))
    # print(s.replace("ll","mm"))
    # print(s.split("w"))

    #string提供的方法是完全匹配
    #引入正则表达式,进行模糊匹配
    import re
    # ret=re.findall("ww{2}l","hello world")
    # print(ret)
    # red=re.findall("xiong","hfjihdjkjldnjxiongkhddfnhvjkndfkln")
    # print(red)#其实这种不适用re,反倒用字符串的方法也可以,杀鸡用牛刀也不好


    # 11元字符 "." "^" "$" "*" "?" "{}" "+" "[]" "|" "()" " "

    #"."通配符 可以代指除了换行符之外的字符,不过"."只能代指一个东西,一个点代指一个字符
    # ret=re.findall("w..l","hello world")
    # print(ret)

    # "^" 尖角符加了尖角符,就只以最开始的位置匹配
    # ret=re.findall('^h...o',"hellodhufduh")
    # print(ret)

    #"$",代表从结尾开始匹配
    # ret=re.findall("h...o$","dfjihhello")
    # print(ret)

    #"*"重复匹配[0,正无穷)
    # ret=re.findall("x.*li","hjkdhjhjdhjjhxionglifhg")#*代表重复前面字符多次
    # print(ret)

    #"+"重复p匹配[1,无穷大)
    # ret=re.findall("x.+li","hjkdhjhjdhjjhxionglifhg")#+代表重复前面字符多次,不过后面代替的字符个数必须大于一
    # print(ret)
    # ret=re.findall("x.+li","hjkdhjhjdhjjhxlifhg")#+代表重复前面字符多次,不过后面代替的字符个数必须大于一
    # print(ret)#[]

    #"?"重复匹配[0,1]
    # ret=re.findall("a?b","abaadfdbaabaaa")#?代表重复前面字符多次,不过后面代替的字符个数在零到一之间
    # print(ret)#['ab', 'b', 'ab']

    #"{}"重复匹配,次数自定义
    # ret=re.findall("a{3}b","abaadfdbasfadfjaaabaaa")#{}代表重复前面字符多次,不过后面代替的字符个数得自定义
    # print(ret)#['aaab']
    # ret=re.findall("a{1,3}b","abaadfdbasfadfjaaabaaa")#{}代表重复前面字符多次,不过后面代替的字符个数1到3次,不过里面机构有个贪婪匹配性质
    # print(ret)#['ab', 'aaab']
    #谈了匹配:在满足条件下的情况,取最多的个数
    # 重复匹配结论 *等于[0,正无穷) "+"重复p匹配[1,无穷大) "?"重复匹配[0,1]


    #"[]"字符集
    # ret=re.findall('a[c,d]x',"acx")#[]里面字符之间有或的关系,可以在里面多选一 #[]取消原字符的特殊功能,除开( ^ -)
    # print(ret)
    # ret=re.findall('a[c,*]x',"acx")#[]里面的*就不再有重复的意思 #[]取消原字符的特殊功能
    # print(ret)
    #
    # ret=re.findall('a[a-z]x',"acx")#a-z:表示从a到z之间的字符 # []里面字符之间有或的关系,可以在里面多选一
    # print(ret)
    # ret=re.findall('[^t]',"actx")#尖角号放在[]里面有取反的意思,[]里面有的就除开与里面相同的字符
    # print(ret)



    #" "反斜杠后面跟元字符去除特殊功能 反斜杠后面跟普通字符实现特殊功能
    #d匹配任何十进制数,它相当于[0-9]
    # print(re.findall('d(520)',"hdsjh2154542164119545201631624842556527"))
    #D匹配任何非数字字符,它相当于类[^0-9]
    #s匹配任何空白字符,它相当于类[ fv]
    #S匹配任何非空白字符,它相当于类[^ fv]
    #w匹配任何字母数字字符,它相当于类[a-zA-Z0-9]
    #W匹配任何非字母数字字符,它相当于类[^a-zA-Z0-9]
    #匹配一个单词边界,也就是指单词和空格的位置
    # print(re.findall(r'i','idfhd,i an li$st'))#寻找特殊字符
    # print(re.findall(r'i','$idfhd, i an li$st'))#寻找特殊字符
    # ret=re.findall(r'blow','blow')#pyton里面的反斜杠本来就有特殊意义,所以我们必须先用r把转意,在把转义后的给re赋予特殊意义
    # print(ret)



    # "()"#分组
    # # ret=re.search('(?P<xiong>d{3})/(?P<li>w{3})',"hjhaadh123fuaaajkdd/kkkjj")
    # "|"#有或的意义在里面



    #正则表达式的方法
    #findall():所有结果都返回到一个列表里面

    #匹配出满足条件的第一个结果
    # ret=re.search('s.b',"djkdjjksgbsgbjdjsgb")#返回匹配到的第一个对象(object),对象可以调用group()返回结果
    # print(ret)
    # print(ret.group())#可以用group调用对象里面的值,一般search于group要联用

    #match():#只在字符串开始匹配,也只返回一个对象
    # ret=re.match("asd","asbfhjkash")
    # print(ret)


    #split#分割
    # "hdjhdsf".split("s")#字符串的split功能
    # re.split('k','djksal')#分割
    # ret=re.split('[j,a]','daddjksal')#分割,j把字符分成两份,啊a再对分出来的两部分进行分解
    # print(ret)#['d', 'dd', 'ks', 'l']


    #sub替换
    # ret=re.sub("x...g","li","jdkfjdkjfkjxiongjfkljsdklj")
    # print(ret)


    #compile#多次匹配,相当于做函数
    # re.findall('.com',"hjfhsdjh.comhfdjhj")#z只能查找一次
    # re.compile()#多次匹配,相当于做函数
    # obj=re.compile('.com')
    # ret=obj.findall("hdhfjksdklfj .comdjhfji")
    # print(ret)
  • 相关阅读:
    操作MS SQL Server 存储过程的类(外加ASP.NET MessageBox类)
    利用DataGrid的超级联接传值
    操作数据库系统信息
    鼠标指向表格中的一行时,该行背景色改变;点击行时,突出显示标记颜色
    asp.net下的UBB代码[C#]
    java 为什么要序列化
    oracle调用java方法的例子(下面所有代码都是在sql/plus
    oracle存储过程
    一个Java程序员应该掌握的10项技能
    七款天气预报代码
  • 原文地址:https://www.cnblogs.com/laoli1020/p/8660774.html
Copyright © 2011-2022 走看看