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

    正则
    表达式(或RE)是一种小型的、高度专业化的编程语言,它内嵌在python中,并通过re模块实现。
    正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行
    正则表达式语言相对小型和受限
    字符匹配
    --普通字符
         大多数字母和字符一般都会和自身匹配
         如正则表达式test会和字符串“test”完全匹配
    --元字符
         . ^  $ * + ? {}  | ()
     
    --常用来指定一个字符集:[abc],[a-z]
    --元字符在字符集中不起作用:[akm$]
    --补集匹配不在区间范围内的字符:[^5]
    ^
    --匹配行首。除非设置MULTILINE标志,它只是匹配字符串的开始。在MULTILINE模式里,它也可以直接匹配字符串中的每个换行。
    $
    --匹配行尾,行尾被定义为要么是字符串尾,要么是一个换行字符后面的任何设置 
    such as:
    >>>import re
    >>>a = 'fuck flck fick fock fack ftck'
    >>>b = re'f'
    >>>re.findall(b,a)

    正则表达式--元字符
    -反斜杠后面可以加不通的字符表示不通特殊意义
    -也可以用于取消所有的元字符:[或\
    d匹配任何十进制数:相当于类[0-9]
    D匹配任何非数字字符:相当于类[^0-9]
    s匹配任何空白字符:他相当于类[ f v]
    S匹配任何非空白字符:他相当于类[^ fv]
    w匹配任何字母数字字符:它相当于类[a-zA-Z0-9]
    W匹配任何非字母数字字符:它相当于类[^a-zA-Z0-9]
    重复举例:
    >>>010-012345678
    -12345670
    >>>c = r'010-d{8}'
    >>>re.findall(c,'010-12345678')
    *:表示将前面的字符重复0-多次
    >>>r = r'ab*'
    >>>re.findall(r,'abbbbbbbbbbbbb')
    ['abbbbbbbbbbbbb']
    +:重复至少要重复1次
    ?:重复0次或者1次 表示前面那个字符可有可无
    +返回的是最大匹配
    >>>a = r'ab+'
    >>>re.findall{r.'abbbbbbbb'}
     abbbbbbbb
    ?返回的是最小匹配非贪婪模式
    ab
    {m,n}:
    -其中m和n是十进制整数。该限定符的意思是至少有m个重复,至多到n个重复。a{1,3}b
    -忽略m会认为下边界是0,而忽略n的结果将是上边界为无穷大(实际是20亿)
    -{0,}等同于*,{1,}等同于+,而{0,1}则与?相同。但是最爱好还是用*+?

    import re
    编译正则表达式
    >>>a = r'd{3,4}-?d{8}'
    >>>a_tel = re.compile(a)
    >>>a_tel.findall('010-12345678')
    给表达式a编译成a_tel
    >>>csvt_re = re.compile(r'csvt',re.I)   re.I不区分大小写
    >>>csvt_re.findall('CSVT')
    'CSVT'
    常用的编译后的
    match()   决定RE是否在字符串刚开始的位置匹配
    search()   扫描字符串 ,找到这个re的匹配位置
    findall()    找到re匹配的所有子串,并把它们作为一个列表返回
    finditer()   找到re匹配的所有子串,并把它们作为一个迭代器返回
    --Matchobject实例方法
    group()   返回被RE匹配的字符串
    start()     返回匹配开始的位置
    end()       返回匹配结束的位置
    span()      返回一个元组包含匹配(开始,结束)的位置
    subn()      将字符串某个内容替换成规则内容
    >>>r =r'c..t'
    >>>re.subn(r.'python','csvt,ccct,cxxt,cbbt,cccc')
    split()     根据某个符号对字符串进行切割

    ,S匹配包括换行在内的所有字符
    ,I匹配对大小写不敏感
    ,L做本地化识别(locale-aware)匹配。语法等“e”或“c”
    ,M多行匹配影响^和$
    ,X能够使用RES的verbose状态,使之组织的更清晰易懂
  • 相关阅读:
    (转载)SAPI 包含sphelper.h编译错误解决方案
    C++11标准的智能指针、野指针、内存泄露的理解(日后还会补充,先浅谈自己的理解)
    504. Base 7(LeetCode)
    242. Valid Anagram(LeetCode)
    169. Majority Element(LeetCode)
    100. Same Tree(LeetCode)
    171. Excel Sheet Column Number(LeetCode)
    168. Excel Sheet Column Title(LeetCode)
    122.Best Time to Buy and Sell Stock II(LeetCode)
    404. Sum of Left Leaves(LeetCode)
  • 原文地址:https://www.cnblogs.com/Sargreis/p/6940313.html
Copyright © 2011-2022 走看看