zoukankan      html  css  js  c++  java
  • Python正则

    | 竖线在正则中表示或,匹配正则表达式 , 比如re1|re2,等于re1 或者 re2  
    . 点号, 表示匹配除换行符以外的任意字符,
    ------------------------------------------------------------------------
    * 星号, 匹配 0 次或者多次前面出现的正则表达式
    ? 问号, 匹配 0 次或者 1 次前面出现的正则表达式, ?只对前面一个单位生效,比如, roo?n 匹配的结果只能是roon ron,意思就是问号前的O,只能出现1次或者0次
    + 加号, 匹配 1 次或者多次前面出现的正则表达式  
    ------------------------------------------------------------------------
    ^  (读lambada)符号, 表示匹配字符串起始部分
    $ 美元符号, 表示匹配字符串终止部分
    ------------------------------------------------------------------------
    {N} 大括号,匹配 N 次前面出现的正则表达式 , 比方说[0-9]{3},匹配三次数字
    {M,N} 匹配M~N次前面出现的正则表达式, 比方说[0-9]{3,5}匹配三到五次数字
    ------------------------------------------------------------------------
    [....] 匹配来自字符集的任意单一字符, 比方说[abc], 匹配来自abc的任意字符
    [..x-y..] 匹配来自字符集x-y的任意单一字符, 比方说[A-Za-z],[0-9], 匹配来自abc的任意字符
    [^...] 不匹配来自此字符集的任和字符,包括某些范围
    ------------------------------------------------------------------------
    (*|+?{})? 用于匹配上面频繁出现/重复出现符号的非贪婪版本(*、+、?、{})  
    (…) 匹配封闭的正则表达式,然后另存为子组 ([0-9]{3})?,f(oo|u)bar 
    ------------------------------------------------------------------------

    常用的记住

    1、. 匹配任意除换行符“ ”外的字符;
    2、*表示匹配前一个字符0次或无限次;
    3、+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复;
    4、 .*? 表示匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
    5、 .+? 表示匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。必须有一个字符
    6、 ? 问号, 匹配 0 次或者 1 次前面出现的正则表达式, ?只对前面一个单位生效,比如, roo?n 匹配的结果只能是roon ron,意思就是问号前的O,只能出现1次或者0次
    如:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab和ab
     
     
     
    特殊字符的含义
     
    d 匹配任何十进制数字,与[0-9]一致(D 与d 相反,不匹配任何非数值型的数字)
    w 匹配任何字母数字字符,与[A-Za-z0-9_]相同(W 与之相反)
    s 匹配任何空格字符,与[ vf]相同(S 与之相反)
     匹配任何单词边界(B 与之相反)
    N 匹配已保存的子组 N(参见上面的(…))
    c 逐字匹配任何特殊字符 c(即,仅按照字面意义匹配,不匹配特殊含义
    A() 匹配字符串的起始(结束)(另见上面介绍的^和$)
     
     
    那么要想匹配上点号. 我们需要. 加一个转义符斜杠
     
     
     
     
    ----------------------------------------------------------------
    re 模块的函数介绍
    本节将介绍两个主要的函数/方法——match()和 search(),以及 compile()函数。
     
    re模块的函数
    compile(pattern,flags = 0) 使用任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象
    ----------------------------------------------------------------
    re 模块函数和正则表达式对象的方法
     
    match(pattern , string , flags=0) 
    尝试使用带有可选的标记的正则表达式的模式来匹配字符串。如果匹配成功,就返回
    匹配对象;如果失败,就返回 None
     
    search(pattern , string , flags=0)
    使用可选标记搜索字符串中第一次出现的正则表达式模式。如果匹配成功,则返回匹
    配对象;如果失败,则返回 None
     
    findall(pattern , string [, flags] )
    查找字符串中所有(非重复)出现的正则表达式模式,并返回一个匹配列表
     
    finditer(pattern , string [, flags] )
    与 findall()函数相同,但返回的不是一个列表,而是一个迭代器。对于每一次匹配,迭
    代器都返回一个匹配对象
     
    split(pattern , string , max=0)
    根据正则表达式的模式分隔符,split 函数将字符串分割为列表,然后返回成功匹配的
    列表,分隔最多操作 max 次(默认分割所有匹配成功的位置)
     
     
    -----------------------------------------------------------------
    sub(pattern , repl , string , count=0)
    使用 repl 替换所有正则表达式的模式在字符串中出现的位置,除非定义 count,否则就
    将替换所有出现的位置(另见 subn()函数,该函数返回替换操作的数目)
     
    purge()  
    清除隐式编译的正则表达式模式
     
    group(num=0)  
    返回整个匹配对象,或者编号为 num 的特定子组
     
    groups(default=None)  
    返回一个包含所有匹配子组的元组(如果没有成功匹配,则返回一个空元组)
     
    groupdict(default=None)  
    返回一个包含所有匹配的命名子组的字典,所有的子组名称作为字典的键(如果没有
    成功匹配,则返回一个空字典)
     
    -------------------------------------------------------------------------
    re.I、re.IGNORECASE 不区分大小写的匹配
    re.L、re.LOCALE 根据所使用的本地语言环境通过w、W、、B、s、S 实现匹配
    re.M、re.MULTILINE ^和$分别匹配目标字符串中行的起始和结尾,而不是严格匹配整个字符串本身的起始
    和结尾
    re.S、re.DOTALL “.”(点号)通常匹配除了 (换行符)之外的所有单个字符;该标记表示“.”(点号)
    能够匹配全部字符
    re.X、re.VERBOSE 通过反斜线转义,否则所有空格加上#(以及在该行中所有后续文字)都被忽略,除非
    在一个字符类中或者允许注释并且提高可读性
     
     
     
    pat = "title=".+?"" 转移符号\, 
     
     
     
    Nobody knows it better than me.
  • 相关阅读:
    sublime text3安装package control插件图文教程
    conda创建新环境
    常用的vscode插件安装
    数组合并组合
    内核软死锁
    Ubuntu分区格式化并挂载新增磁盘方法
    Linux如何列出svn一个文件夹下的所有文件
    C++ UTF-8和GBK相互转化
    Linux shell如何用正则表达式匹配分组数据
    如何对接jsoncpp?
  • 原文地址:https://www.cnblogs.com/dadaizi/p/11964722.html
Copyright © 2011-2022 走看看