zoukankan      html  css  js  c++  java
  • python正则表达式基础之re模块

    一、正则表达式

    re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,他对所有的语言都通用。注意:

    • re模块是python独有的
    • 正则表达式所有编程语言都可以使用
    • re模块、正则表达式是对字符串进行操作

    因为,re模块中的方法大都借助于正则表达式,故先学习正则表达式。

    二、常用正则表达式

    2.1 元字符

    元字符
    匹配内容说明
    . 匹配除换行符以外的任意字符
    w 匹配字母或数字或下划线
    s 匹配任意的空白符
    d 匹配数字
    匹配一个换行符
    匹配一个制表符
     匹配一个单词的结尾
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
    W 匹配非字母或数字或下划线
    D 匹配非数字
    S 匹配非空白符
    a|b 匹配字符a或字符b
    () 匹配括号内的表达式,也表示一个组
    [] 匹配字符组中的字符
    [^]

    匹配除了字符组中字符的所有字符

     

     

     

     

     

    2.2 量词

    量词 用法说明
    * 重复零次或更多次
    + 重复一次或更多次
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次

     

     

    三、正则表达式的使用

    3.1    . ^ $

    正则 待匹配字符 匹配结果 说明
    a. abacad abacad 匹配所有"a."的字符
    ^a. abacad ab 只从开头匹配"a."
    a.$ abacad ad 只匹配结尾的"a.$"

      

     3.2   * + ? { }

    正则 待匹配字符 匹配结果 说明
    a.? abefacgad ab
    ac
    ad
    ?表示重复零次或一次,即只匹配"a"后面一个任意字符。
    a.* abefacgad

    abefacgad

    *表示重复零次或多次,即匹配"a"后面0或多个任意字符。
    a.+ abefacgad abefacgad +表示重复一次或多次,即只匹配"a"后面1个或多个任意字符。
    a.{1,2} abefacgad abe
    acg
    ad
    {1,2}匹配1到2次任意字符。

    注意:前面的*、+、?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配

    正则 待匹配字符 匹配结果 说明
    a.*? abefacgad a
    a
    a
    惰性匹配

    3.3 字符集[][^]

    正则 待匹配字符 匹配结果 说明
    a[befcgd]* abefacgad abef
    acg
    ad
    表示匹配"a"后面[befcgd]的字符任意次
    a[^f]* abefacgad abe
    acgad
    表示匹配一个不是"f"的字符任意次
    [d] 412a3bc 4
    1
    2
    3
    表示匹配任意一个数字,匹配到4个结果
    [d]+ 412a3bc 412
    3
    表示匹配任意个数字,匹配到2个结果

    四、re模块代码基础函数介绍

    • re.compile(pattern,flags = 0 ):用于编译正则表达式,生成一个正则表达式对象
    • re.search(pattern,string,flags = 0 ):扫描整个字符串并返回第一个成功的匹配
    • re.match(pattern,string,flags = 0 ):如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。
    • re.fullmatch(pattern,string,flags = 0 ):如果整个字符串与正则表达式模式匹配,则返回相应的match对象。
    • re.split(pattern,string,maxsplit = 0,flags = 0 ):通过出现模式来拆分字符串。
    • re.findall(pattern,string,flags = 0 ):返回字符串中所有不重叠匹配项的列表,如果没有匹配到返回空list不会报错
    • re.finditer(pattern,string,flags = 0 ):返回一个迭代器,该迭代器在string类型的RE 模式的所有非重叠匹配中产生匹配对象。
    • re.sub(pattern,repl,string,count = 0,flags = 0 ):返回通过用替换repl替换字符串中最左边的不重叠模式所获得的字符串。

     

  • 相关阅读:
    【NOIP2013提高组T3】货车运输-最大生成树+倍增LCA
    【POJ1986】Distance Queries-LCA算法
    【POJ1986】Distance Queries-LCA算法
    【HDU2874】Connections between cities-LCA算法
    【HDU2874】Connections between cities-LCA算法
    【HDU2586】How far away?-LCA算法模板题
    js ajax调用请求
    js ajax调用请求
    ThinkPHP 3.1.2 视图 2
    ThinkPHP 3.1.2 视图 2
  • 原文地址:https://www.cnblogs.com/lvhuayan/p/15259071.html
Copyright © 2011-2022 走看看