• 正则跟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字符串可以是多行的,忽略空白字符,并可以添加注释。

     

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

     

  • 相关阅读:
    学习es6中class——整合阮一峰教程、MDN
    flex 整理 笔记
    面试题中常见的布局类问题总结
    跨域问题的总结
    js中函数传递参数,究竟是值传递还是引用传递?
    webpack 从入门到放弃
    浏览器的解析和执行过程
    Office Online Server – FILE TOO LARGE
    PowerShell中汉字与ASCII码相互转换
    查询SQLSERVER执行过的SQL记录(历史查询记录)
  • 原文地址:https://www.cnblogs.com/liu1983/p/13512156.html
Copyright © 2020-2023  润新知