zoukankan      html  css  js  c++  java
  • python基础(5)正则表达式

    1,re模块
    在python中,正则表达式的模块是RE
     
     
    2,正则表达式中的特殊字符
     
    符号           含义                                      re例子
    .              匹配任何一个字符(除了NEWLINE)             b.b
    ^              匹配字符串的开始                            ^hello
    $              匹配字符串的结束                            /bin/sh$
    * 匹配0个或更多的前RE表达式 [A-Za-z0-9]*
    +              匹配1个或多个前面的RE表达式                  [a-z]+\.com
    ?              匹配0个或1个前面的RE表达式                   hello?
    {N}            匹配N个前面的RE表达式                        [0-9]{3}
    {M,N}          匹配M到N个前面出现的RE表达式                 [0-9]{3,5}
    [...]          匹配任何一个单一字符                         [abcd]
    [...x-y...]    匹配任何一个单一字符从x到y                   [a-zA-Z]
    [^...]         不匹配任何一个单一字符                       [^abcd] 非abcd
     
    re1|re2        匹配符合re1和re2的字符串                     foo|bar
    (...)          匹配括号中的正则表达式并保存为子组           ([0-9]{3})?
     
    其他特殊字符
    \d             匹配任何的数字和[0-9]一样
    \D             匹配任何非数组和[^0-9]一样
    \w             匹配任何数字和字母和[a-zA-Z0-9]一样\W是它的反意    [a-z]\w+
    \s             匹配任何空白字符和[ \t\b\r\v\f\n]同,\S是它的反义   of\sthe
    \nn            匹配以保存的子组(参考()表达式)                   price: \16
    \A(\Z)         匹配字符串的起始和结束                           \AHi
    \c             逐一匹配特殊字符c是特殊字符,取消特殊字符的含     \*,\n
    \b(\B)         匹配单词边界\B是它的反义                         \bThe\b
     
     
    3,RE模块
     
    3.1 模块中的核心函数
    .compile(pattern,flags=0)
    编译一个正则表达式pattern到正则表达式对象regex,该对象可以用于以后的match等函数。该函数可能由于flags标记的设置而改变行为,比如使用|来添加一个匹配。
    该函数保留正则表达式的对象,以便以后可以重用,这样可以提高效率,例如:
     
    prog = re.compile(pattern)
    result = prog.match(string)
    相当于调用:
    result = re.match(pattern, string)
     
    .search(pattern,string, flags=0)
    在字符串string 中查找正则表达式模式pattern 的第一次出现,flags 是可选标志符,如果匹配成功,则返回一个匹配对象;否则返回None

    .findall(pattern,string[,flags])a 在字符串string 中查找正则表达式模式pattern 的所有(非重复)出现;返回一个匹配对象的列表

    .finditer(pattern,string[, flags])b 和findall()相同,但返回的不是列表而是迭代器;对于每个匹配,该迭代器返回一个匹配对象
     
     
    .split(pattern,string, max=0) 根据正则表达式pattern 中的分隔符把字符string 分割为一个列表,返回成功匹配的列表,最多分割max 次(默认是分割所有匹配的地方)。

    .sub(pattern, repl, string, max=0) 把字符串string 中所有匹配正则表达式pattern 的地方替换成字符串repl,如果max 的值没有给出,则对所有匹配的地方进行替换(另外,请参考subn(),它还会返回一个表示替换次数的数值)。

    .group(num=0) 返回全部匹配对象(或指定编号是num 的子组)
    .groups() 返回一个包含全部匹配的子组的元组(如果没有成功匹配,就返回一个空元组)
     
     
     
    4,正则表达式的应用
    .编译正则表达式
    由于正则表达式在进行模式匹配前,会编译成regex对象。由于正则表达式多次用于匹配,所以在匹配之前最好做预编译。而且模块会对以编译好的对象进行缓存,这样会很大程度上提高性能。
  • 相关阅读:
    查看Ubuntu操作系统位数 Anny
    no such file to load zlib when using gem install Anny
    Error: shasum check failed for /tmp/npm1316662414557/13166624159930.13772299513220787/tmp.tgz Anny
    Future接口的应用
    ScheduledThreadPool
    弄了个群
    阻塞与中断
    获得CPU个数
    文件路径问题
    一个日志服务器的框架
  • 原文地址:https://www.cnblogs.com/rosesmall/p/2833528.html
Copyright © 2011-2022 走看看