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

    摘录:正则表达式(RE)为高级文本模式匹配,以及搜索-代替等功能提供了基础。正则表达式(RE)是一些有字符和特殊符号组成的字符串,它们描述了这些字符和字符的某种重复方式,因策能按某种模式匹配一个有相似特征的字符串的集合,因策能按某模式匹配一系列有相似特征的字符串。

    1. 下面是一些最常用的元字符(metacharacters),正是他们赋予了正则表达式强大的功能和灵活性。

    Symbols 说明 举例
    leteral 匹配字符串的值 foo
    re1|re2 匹配正则表达式re1或re2 foo|bar
    .  匹配任何字符(换行符除外) b.b
    ^ 匹配字符串的开始 ^Dear
    $ 匹配字符串的结尾 /bin/*sh$
    * 匹配前面出现的正则表达式零次或多次 [A-Za-z0-9]*
    + 匹配前面出现的正则表达式一次或多次 [a-z]+\.com
    ? 匹配前面出现的正则表达式零次或一次 goo+
    {N} 匹配前面出现的正则表达式N次 [0-9]{3}
    {M,N} 匹配重复出现M次到N次的正则表达式 [0-9]{5,9}
    [...] 匹配字符组中出现的任意一个字符 [aeiou]
    [..x-y..] 匹配从字符x到y中的任意一个字符 [0-9],[A-Za-z]
    [^...] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果此字符集中出现) [^aeiou],[^A-Za-z0-9_]
    (*|+|?|{})? 用于上线出现的任何"非贪婪"版本重复匹配次数副号(*,+,?,{}) .*?[a-z]
    (...) 匹配封闭括号中正则表达式(RE),并保存为子组 ([0-9]{3})?, f(oo|u)bar
    \a 匹配任何数据,和[0-9]一样,(\D是\d的反义:然和非数字符) data\d+.txt
    \w 匹配然和数据字母字符,和[A-Za-z0-9]相同(\W是\w的反义) [A-Za-z_]\w+
    \s 配置任何空白符,和[\n\t\r\v\f]相同,(\S是\s的反义) of\sthe
    \b 匹配单词边界(\B是\b的反义) \bThe\b
    \nn 匹配以保存的子组(请参考上面的正则表达式副号:(...)) price:\16
    \c 逐一匹配特殊字符c(即,取消它的特殊含义,按字面匹配) \., \\, \*

    2. python处理正则表达式的模块

      re模块的函数

      compile(pattern, flags=0):对正则表达式pattern进行编译,并返回一个regex对象

      re模块的函数和regex对象的方法

      match(pattern, string, flags=0):尝试用正则表达式模式pattern匹配字符串string,如果匹配成功,则返回一个匹配对象;否则返回None

      search(pattern, string, flags=0):在字符串string中查找正则表达式模式pattern的第一次出现,如果匹配成功,则返回一个匹配对象。否则返回None

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

      finditer(pattern, string[, flags]):和findall()相同,但返回的不是离别而是迭代器:对于每个匹配该迭代器返回一个匹配对象

      匹配对象的方法

      split(pattern, string, max=0):根据正则表达式pattern中的分隔符吧字符string分割为一个列表,返回成功匹配的列表,最多分割max次

      sub(pattern, repl, string, max=0):把字符串string中左右匹配正则表达式pattern的地方替换成字符串rep1,如果max值没有给出,则对所有匹配的地方进行替换

      group(num=0):返回全部匹配对象(或指定编号是num的子组)

      groups():返回一个包含全部匹配的子组的元组(如果没有匹配成功,就返回一个空元组)

    3. 正则表达式示例

    >>> import re
    >>> data = 'Thu Feb 15 17:46:04 2007::uzifzf@dpyivihw.gov::1171590364-6-8'
    >>> patt = '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)'
    >>> m = re.match(patt, data)
    >>> m.group()
    'Thu'
    >>>

  • 相关阅读:
    Lilo的实现
    通过Bochs分析Lilo启动Linux内核的过程
    Linux内核代码布局
    Linux启动过程的内核代码分析
    Linux启动过程的C语言代码分析
    Linux操作系统中对于NTFS读取目录功能的实现
    Linux初始化的汇编代码
    Linux文件映射的反思
    Xen的概况
    安装debian总结以及编译linux内核
  • 原文地址:https://www.cnblogs.com/dw729/p/2993914.html
Copyright © 2011-2022 走看看