zoukankan      html  css  js  c++  java
  • 正则跟re模块内容2020年8月16日

    re模块

    [字符组] #在同一个位置上可能出现的各种字符组成一个字符组。

    字符:

    .   匹配除换行符以外的任意字符(一个字符)

    w 匹配字母或数字或下划线

    s 匹配任意的空白符 tab,空格等)

    d 匹配数字

      匹配一个换行符

    匹配一个制表符

     匹配一个单词的结尾(需要指定结尾的字符)

    ^ 匹配字符串的开始(写在开头)

    ¥ 匹配字符串的结尾(写在结尾)

    W 匹配非字母或非数字或非下划线

    D 匹配非数字

    S 匹配非空格符

    a|b   匹配字符a或b (优先匹配左边)

    () 匹配括号内的表达式,也表示一个组。(对整体进行量词约束)

    [...] 匹配字符组中的字符

    [^...] 匹配除了字符串中字符的所有字符

     

    量词:

    * 重复零次或更多次

    + 重复一次或更多次

    ? 重复零次或一次

    {n} 重复n次

    {n,} 重复n次货更多次

    {n,m} 重复n到m次

     

    匹配是贪恋匹配,尽可能多的匹配到,如果后面加上?则会变成非贪婪匹配,最小匹配。

     

    转义符:

    r’ ’ #前面的r表示不需要转义  

     

    re.findall(‘正则’,‘字符串’)  #查找出所有的匹配项,并返回成列表

      ret = re.findall(‘www.(baidu|oldbody).com’,’www.oldbody.com’)

      输出会是 oldbody,因为正则里的()分组的原因,如要打印所有,需要在条件中修改成:www.(?:baidu|oldbody).com

    re.search(‘正则’,‘字符串’)  #查找,无返回空,有则返回包含匹配信息的对象(找到第一个就返回),需要用  返回值.group() 来打印结果。

    re.match(‘正则’,‘字符串’)  #必须从头开始匹配。同样返回需要用group()来显示。匹配不上则返回None。

     

    re.split(‘正则’,‘字符串’)  # [ab] 分隔 babcd,先用a分隔,再用b对后面的进行分隔。分隔时,如果前面没有元素,则用空填补。

         如果正则变成分组,将会保留分隔标识,标识自成一个元素

    re.sub(‘’,’H’,’abcd1hasd’,1)  #把字符串中的数字()替换成H,只替换一个。默认是全部替换。

    re.subn(‘’,’H’,’abcd1hasd’)  #返回替换的结果跟替换的次数,结果是一个元组。

     

    obj = re.compile(‘{3}’) #将正则表达式编译成一个正则表达式对象。

    ret = obj.search(‘abdedf122agcd’) #正则表达式对象调用search,参数为待匹配对象。

     

    <(?P<tag_name>w+)>w+</(?P=tag_name)>    <h1>hello</h1>

    后面的tag_name 为引用分组,表示跟前面的匹配内容一致。

    (?P<id>)     ?P<id> 给这个分组起名字为id,用group()索引时可以用id来查找。

    .group(‘tag_name’)  #返回 h1         

    .group()           #返回  <h1>hello</h1>

    re.search(r”<(w+)>w+</1>”,”<h1>hello</h1>”)  #1表示第一个分组

     

    ret = re.finditer(‘d’,’adef2fad3fadfa’) #返回一个存放匹配结果的迭代器

    for I in ret:

             print(i.group())      #需要group()来看结果。

    需要group()出结果的,正则如果分组,将会自动变成多个输出,用group的参数控制当索引进行输出。

     

    flag

    re.I       #忽略大小写

    re.m       #多行模式,改变^和$的行为

    re.S        #点可以匹配任意字符,包括换行符

    re.L        #做本地化识别的匹配,表示特殊字符集w,W,,B,s,S依赖当前环境,不推荐使用。

    re.U      #使用 w W S s d D取决于unicode定义的字符属性,python3中默认使用该flag

    re.x         #冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释。

     

    |  (或)  #从左往右匹配,匹配上就不继续匹配了,所以应该把长的放前面。

     

  • 相关阅读:
    B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因
    异步请求数据加载到表格后根据不同状态改变表格背景颜色【表格背景色】
    Linux/windows查看设置环境变量指令
    【周期性执行事件】MySQL事件(Event)&任务调度
    DEDE列表页调用TAG标签
    poj2488 A Knight's Journey
    [置顶] Codeforces Round #190 (Div. 2)(完全)
    SharePoint 2010 用Event Receiver将文件夹自动变成approved状态 (2)
    .NET领域驱动设计—初尝(三:穿过迷雾走向光明)
    Android解决异常apk on device '0292bea1': Unable to open sync connection!
  • 原文地址:https://www.cnblogs.com/liu1983/p/13512156.html
Copyright © 2011-2022 走看看