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

     

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

     

  • 相关阅读:
    共享纸巾更换主板代码分析 共享纸巾主板更换后的对接代码
    Python Django Ajax 传递列表数据
    Python Django migrate 报错解决办法
    Python 创建字典的多种方式
    Python 两个list合并成一个字典
    Python 正则 re.sub替换
    python Django Ajax基础
    Python Django 获取表单数据的三种方式
    python Django html 模板循环条件
    Python Django ORM 字段类型、参数、外键操作
  • 原文地址:https://www.cnblogs.com/liu1983/p/13512156.html
Copyright © 2011-2022 走看看