zoukankan      html  css  js  c++  java
  • re模块及其方法

    re模块:

    import  re

    正则表达式本身具有处理字符串的能力

    如果要处理的字符串存在python的内存里,模块--->操作正则表达式

    ret= re.findall("d+","kdk334k5kjkj76k54j5kk")

    print(ret)

    一次性返回所有匹配到的项,直接存到列表中.

    findall 和分组()的问题

    import re

    ret = re.findall("d+(?:.d+)?","1.32+4.78")

    print(ret)

    ?: 表示取消优先(分组),  ?: 写在一个分组的最开始,表示在findall方法取消这个分组优先级.

    下面的例子:

    ret=re.findall(r"d+.d+|(d+)","1-2*(60+(-40.35/5)-(-4*3))")
    while '' in ret:
      ret.remove('')
      print(ret)

    注意:!!!:这里例子中的匹配顺序是:依照正则表达式,匹配内容,先匹配d+.d+ 符合就返回这个值,不符合返回 "" 空字符串,然后在匹配(d+),符合就返回这个值,不符合返回 "" 空字符串,因为 () 具有优先顺序,所以优先显是的是跟 () 匹配出来的结果

    记住!!!在用findall这个方法的时候如果没有取消()的优先顺序的话,就会把正则表达式分成几个部分,分成几个部分就会匹配几个结果,最后返回的是括号()里的.因为()在findall方法里具有优先顺序.如果分开的几部分里正则表达式有重复的只会从左到右依次开始匹配,匹配第一个正则表达式,匹配成功后,后面的表达式没有匹配,最后只会 返回 "" 空字符.

    ret = re.search("d+","kkf33kj3kjkd34k4j45kjkjfj")

    print(ret)  #正则匹配结果的对象

    if ret:

      print(ret.group())

    一次只匹配第一个符合条件表达式,以对像的形式返回,通过对对象.group()取实际值,如果没有匹配到,会返回None 再调用group则会报错.

    findall:匹配所有符合条件的       返回一个列表

    search:只匹配第一个符合条件的  有值返回值,没有值返回None

    ret = re.split("(d+)","adk34ldjkf432jkjdj343llke")

    print(ret)

    split中如果带有分组,会在分组的同时保留被分割内容,如果没有有分组则不会保留被分割内容   ?""也能不保留被分割内容.

    ret = re.sub("d+","sb","alex83wusir34egon43",4(替换次数,可设置))

    print(ret)  #替换,同replace一样.

    ret = re.subn("d+","sb","alex83wusir34egon32",4(可设置))

    print(ret)  #比sub显示的结果多了替换的次数.

    compile节省时间:

    obj = re.compile("d+")  #将正则表达式编译成为一个正则表达式对象.

    print(obj)

    ret = obj.search("abc12kdk33djfj")#正则表达式对象调用search,参数为待匹配的字符串

    print(ret.group())

    finditer 具有迭代功能,节省空间.

    ret = re.finditer("d+","34kfj55j4kkf43fjk")

    print(ret)

    for i in ret:

      print(i.group())

    总结:

    基础查找: findall(分组优先显示)  search   match

    替换分割: split(分组保留)  sub  subn

    代码优化: compile  finditer

    分组命名:

    html标签语言

    html是一种代码

    对于浏览器来说,浏览器和代码之间有一种约定.

    写在一个标识符之内的代码可以有一种独立的格式.

    标识符: 例 <h1>fjdladjkfei</h1>

    给分组起名字(?P<tag>正则表达式),使用分组的名字(?P=tag)

    ret = re.search("<(?P<tag>w+?)>w+</(?P=tag)>","<b>hello</b>")

    print(ret.group())

    print(ret.group(tag))

    根据分组的索引使用分组1,1是分组的索引值.

    ret=re.search(r"<(w+?)>w+</1>","<b>hello</b>")

    print(ret.group())

    print(ret.group(1))

    ret = re.finditer(r"<(w+?)>w+</1>","<b>kdjajfkd</b>")

    for i in ret:

      print(i.group(1))

      print(i.group())

  • 相关阅读:
    Linq 中的Select事例
    C#关于事件的几个好例子
    C#运用实例.读取csv里面的词条,对每一个词条抓取百度百科相关资料,然后存取到数据库
    cookie 和 session 基本使用 以及 封装
    javascript 兼容各个浏览器的事件
    jquery选择器从认识到使用初级篇
    作业八—Alpha阶段项目总结
    第十四次
    第十三次
    十二次
  • 原文地址:https://www.cnblogs.com/fengkun125/p/9307416.html
Copyright © 2011-2022 走看看