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状态,使之组织的更清晰易懂
  • 相关阅读:
    201571030134 由《构建之法》所想到的~
    unity3d 打包Xcode工程自动添加framework
    Unity3d Vuforia与Mobile Movie Texture插件结合
    Unity3d 打开本地摄像头扫描二维码
    Unity3d 获取文件夹的图片
    iOS开发 Button自定义
    Unity3D判断鼠标左右滑动
    unity3d控制物体旋转的角度
    第一次作业
    人工智能第二次作业
  • 原文地址:https://www.cnblogs.com/Sargreis/p/6940313.html
Copyright © 2011-2022 走看看