zoukankan      html  css  js  c++  java
  • python之正则(一)

    1.常用正则表达式:

    d:数字[0-9] ,实例:adc -> a1c
    D:非数字[^d],实例:aDc -> abc
    s:空白字符[<空格> fv] 实例:asc ->a c
    S:非空白字符[^s] 实例:aSc ->abc
    w:单词字符[A-Za-z0-9_] 实例:awc ->abc
    W:非单词字符[^W]

    *:匹配前一个字符0或无限次; abc* -> ab或abc或abcc
    +:匹配前一个字符1次或无限次 abc+ -> abc或abcc
    ?:匹配前一个字符0次或1次 abc? -> ab或者abc

    {m}:匹配前一个字符m次 ab[2]c -> abbc


    ^:匹配字符串开头,在多行模式中匹配每一行的开头;
    $:匹配字符串结尾,在多行模式中匹配每一行的结尾;
    A:仅匹配字符串开头
    :仅匹配字符串结尾
    :匹配w和W之间;
    B:{^}


    以什么结尾:一般这样写(abc)$


    |:它总是先尝试匹配左边的表达式,一旦成功则跳过匹配右边的表达式;

    (...):被括起来的表达式将作为分组,从表达式左边开始每遇到一个分组的
    左括号'(',编号+1
    另外,分组表达式作为一个整体,可以后接数量词,表达式中的|仅在
    该组中有效;

    例如:(abc){2} -> abcabc
    a(123|456)c -> a456c

    (?P<name>...):分组,除了原有的编号外再指定一个额外的别名;
    (?P<id>abc){2} -> abcabc
    <number> :引用编号为<number>的分组匹配到的字符串.
    (d)abc1 -> 1abc1或者5abc5
    (?P=name):引用别名为<name>的分组匹配到的字符串.
    (?P<id>d)abc(?P=id) -> 1abc1或者5abc5

    分组:(?P<name>...)省略的部分就是正常的正则匹配,我们把
    匹配到的这个整体给赋一个变量名字name,在后续调用的时候,
    分组表达式的写法:(abc)edcrfv.*(wsx).*1

    2.编译正则表达式

    r表示raw的简及raw string 意思是原生字符,也就是说这个字符串中间的特殊字符不用转义;

    比如你要表示' ',可以这样:r' '

    但是,如果你不用原生字符,而是用字符串你得这样:'\n'

    shell 中:grep -E或egrep


    re.compile(pattern[,flags])
    这个方法就是将字符串的正则表达式编译成正则对象,第二个参数flag是匹配
    模式,取值可以使用按位或者运算符"|"表示同时生效,比如re.l | re.M,
    flag的可选值有:
    re.l(re.lGNORECASE):忽略大小写(括号内是完整写法,下同)
    M(MULTILINE):多行模式,改变'^'和'$'的行为;
    S(DOTALL):点任意匹配模式,改变'.'的行为;
    L(LOCALE):使预定义字符类w W  B s S取决于当前区域设定;
    U(UNICODE):使预定义字符类w W  B s S d D 取决于unicode定义的字符属性.
    X(VERBOSE):详细模式。这个模式下正则表达式可以是多行,忽略空白符,并
    可以加入注释。以下两个正则表达式是等价的:
    a = re.compile(r"""d+ #the integralpart
    . #the decimal point
    d * # some fractional digits""",re.X)
    b = re.compile(r"d+.d")

    1.正则匹配是,优先编译成正则对象,然后再进行匹配,

    3.re正则对象和正则匹配效率比较

    re模块是python中处理正则表达式的一个模块,通过re模块的方法,把正则表达式pattern
    编译成正则对象,以便使用正则对象的方法.那为什么要使用re模块来把正则表达式
    搞成正则对象呢,最主要的是可以提高代码的执行效率,正则对象比正则匹配快好多;

  • 相关阅读:
    Python--安装 pip 和 scapy
    windows设置代理
    麦子的《我奋斗了18年才和你坐在一起喝咖啡》
    Tar命令
    test
    markdown语法
    js apply call
    windows文件大小和占用空间为何不一样
    prolog笔记
    html文字超出显示省略号
  • 原文地址:https://www.cnblogs.com/awenxianliao/p/7837178.html
Copyright © 2011-2022 走看看