zoukankan      html  css  js  c++  java
  • python 正则表达式

    常用re模块的表示方式

    字符

      d  匹配数字

      D  匹配非数字

      s  匹配空白符

      .   匹配除换行符以外的所有字符

        匹配单词的开始后者结束

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

      ^  匹配字符的开始

      $  匹配字符的结束

    次数

      *  匹配零次至无限次

      +  匹配一次至无限次

      ?  匹配零次至一次

      {n} 匹配n次

      {n,} 匹配n次之无限次

      {n,m}  匹配n次至m次

    常用5种方法:match, search, findall,split,sub,

    match

      match(pattern, string, flags=0)

      从开始位置开始匹配,成功返回一个对象,未匹配返回None

    import re
    a = "asdsfsfhaj67772hhsdja"
    result1 = re.match("asw?", a)
    print(result1.group())
    result2 = re.match("(a)(s)w?", a)
    print(result2.groups())
    result3 = re.match("(?P<n1>a)(?P<n2>s)w?", a)
    print(result3.groupdict())
    
    运行结果:
    asd
    ('a', 's')
    {'n2': 's', 'n1': 'a'}

     

    search

      search(pattern, string, flags=0)

      浏览整个字符匹配第一个,未匹配返回None,(用法跟match出不多)

      

    import re
    a = "sdsfsfhasj67772hhsdja"
    result1 = re.search("asw?", a)
    print(result1.group())
    result2 = re.search("(a)sw?", a)
    print(result2.groups())
    result3 = re.search("(?P<n1>a)(?P<n2>s)w?", a)
    print(result3.groupdict())
    
    
    结果:
    asj
    ('a',)
    {'n2': 's', 'n1': 'a'}

    findall

      findall(pattern, string, flags=0)

      获取非重复的匹配列表;如果有一个组则以列表形式返回,且每一个匹配均是字符串;如果模型中有多个组,则以列表形式返回,且每一个匹配均是元祖;

    空的匹配也会包含在结果中
      
    import re
    a = "asdsfsfhasj67772hhasysdja"
    #无分组
    result1 = re.findall("asw?", a)
    print(result1)
    #有分组
    result2 = re.findall("a(s)(w)s",a)
    print(result2)
    
    
    结果:
    ['asd', 'asj', 'asy']
    [('s', 'd'), ('s', 'y')]

     

    sub

      替换匹配成功的字符串

      sub(pattern, repl, string, count=0, flags=0)

      pattern: 正则模型
      repl   : 要替换的字符串或可执行对象
      string : 要匹配的字符串
      count  : 指定匹配个数
      flags  : 匹配模式

      

    import re
    a = "i like coding"
    result = re.sub("like", "love", a)
    print(result)
    
    
    结果:
    i love coding

    split

      根据正则匹配分割字符串    (可以用来写简单的计算器)

      split(pattern, string, maxsplit=0, flags=0)

      pattern: 正则模型
      string : 要匹配的字符串
      maxsplit:指定分割个数
      flags  : 匹配模式
     
    import re
    a = "y like coding"
    result = re.split("i", a)
    print(result)
    
    结果:
    ['y l', 'ke cod', 'ng']

      正则表达式的另一种方法

      regex = re.compile(pattern, flags=0)

      

  • 相关阅读:
    List<T> 添加 DataTable
    sql 在not in 子查询有null值情况下经常出现的陷阱
    SQL查询~ 存在一个表而不在另一个表中的数据
    SQL Server xtype
    jQurey 获取当前时间
    sp_rename
    Longest Substring Without Repeating Characters
    Fraction to Recurring Decimal
    链表翻转系列
    蓄水池抽样
  • 原文地址:https://www.cnblogs.com/waylon/p/6600821.html
Copyright © 2011-2022 走看看