python3+ 模块学习 之 re

re 模块

参考:Python3 如何优雅地使用正则表达式(详解系列)  

   Python3 正则表达式特殊符号及用法(详细列表)    (出处: 鱼C论坛)

正则表达式

常用元字符:
. ^ $ * + ?  {  } [  ] \ | (  )         

* 表示匹配0次或多次
+ 表示匹配1次或多次
? 表示匹配0次或1次
{m,n} 表示匹配m到n次(前四个加‘?‘实现非贪婪匹配)
| 表示或操作
^ 匹配字符串的起始位置
$ 匹配字符串的结束位置

\(元字符)    ---去除元字符的特殊功能,表示匹配正常字符

\(普通字符)    ----实现特殊功能

         (普通字符小写,表示肯定,普通字符大写,表示非    e.g. \d相当于[0-9]   \D相当于[^0-9])

\d 相当于[0-9]
\s 匹配任何空白字符,相当于[\t\n\r\f\v]
\w 匹配任何单词字符
\b 匹配单词的开始或结束,表示单词边界
\Z 只匹配字符串的结束位置

python字符串与正则表示字符串有冲突,如\b(python字符串表示ASCII码8制表符,而正则表达式则表示匹配单词的开始或结束),在python中书写正则表示式时,要使用python的原始字符串,即添加‘r‘前缀。 

Python 中正则表达式的扩展语法(‘...‘表示正常的正则表达式):

  (?:...)      表示非捕获组,非捕获组不会影响其他组的序号

  (?P<name>...)  表示命名组,反向引用(?P=name)

  前向断言(零宽,即断言不会被匹配到结果字符串中,也不会消耗字符串):即断言在此位置的后面匹配的是...的内容(在断言字符串的前面,故称前向断言)

    (?=...)    表示肯定,匹配成功表示成功,否则失败。

    (?!...)    表示否定, 匹配失败表示成功,否则失败

      e.g.  .*[.](?!bat$).*$  匹配文件扩展名不为‘bat‘的文件

  后向断言(零宽,即断言不会被匹配到结果字符串中,也不会消耗字符串):即断言在此位置的前面匹配的是...的内容(在断言字符串的后面,故称后向断言)

    (?<=...)   表示肯定,匹配成功表示成功,否则失败。

    (?<!...)   表示否定, 匹配失败表示成功,否则失败

  条件匹配:  

    (?(id/name)Y|N)       ,如果id 或者name匹配,则匹配‘Y‘,否则,匹配‘N‘

  字符串替换的引用:

    \g序号  或  \g<序号>    推荐用第二种方法,防止歧义

    \g<name>         用命名组的方式引用

      

python中使用正则表达式:(re module)

1.调用全局函数:

match(), search(), findall()

参数:(正则表达式, 匹配字符串[,匹配标志])

ASCII, A 使得转义符号如\w, \b, \s, \d只能匹配ASCII字符
DOTALL, S 使得. 匹配任何符号,包括换行符
IGNORECASE, I 匹配不区分大小写
LOCALE, L 支持当前的语言设置
MULTILINE, M   多行匹配
VERBOSE, X 启用详细的正则表达式(增加正则表达式的可读性,匹配时忽略‘ ‘和‘\n‘ )

2.创建模式对象:

p = re.compile(正则表达式[,匹配标志])

然后调用对象的方法。

详见python标准文档。

python全局函数和对象方法中返回的match对象,设为m:

m.group(0)    查看整个正则表达式的匹配字符串

m.group(1)    查看第一个分组的匹配结果(分组在python中用小括号表示),其他分组依此类推

m.group(‘name‘)     同上,用分组的名字索引

m.groups()             返回所有分组的匹配结果,用元组表示

m.groupdict()    同上,用字典表示

m.start([group])      返回匹配的起始位置

m.end([group])    返回匹配的终止位置

m.span()     查看匹配的首尾位置的元组

详见python标准文档。

时间: 2024-10-23 18:19:48

python3+ 模块学习 之 re的相关文章

常用模块学习(一)

常用模块学习(一) 常用模块学习-小鸡汤 推荐节目-晓说: <晓说>是2012年3月高晓松开始主持的网络脱口秀节目 每期由主持人高晓松谈论一个热门话题,打造视频化的"高晓松专栏文章" 常用模块学习-模块的种类和导入方法 ''' 1.什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方

Python 模块学习

模块学习: http://wsyht90.blog.51cto.com/9014030/1845737 1.getpass 2.os 3.sys 4.subprocess 5.hashlib 6.json 7.pickle 8.shutil 9.time 10.datetime 11.re 12.random 13.configparser 14.traceback 15.yaml 16.itertools 17.logging 18.urllib.urllib2 19.paramiko ###

python模块学习(2)——re模块

正则表达式并不是python的一部分,正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 下图展示了使用正则表达式进行匹配的流程:  正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符

Node.js笔记(0003)---Express框架Router模块学习笔记

这段时间一直有在看Express框架的API,最近刚看到Router,以下是我认为需要注意的地方: Router模块中有一个param方法,刚开始看得有点模糊,官网大概是这么描述的: Map logic to route parameters. 大概意思就是路由参数的映射逻辑 这个可能一时半会也不明白其作用,尤其是不知道get和param的执行顺序 再看看源码里面的介绍: Map the given param placeholder `name`(s) to the given callbac

openoffice osl模块学习1

由" can i get a char* , please?"看起: Just barely. OO.o has at least six string wrappers, although the C implementations are of little interest: rtl_String - sal/inc/rtl/string.h"Normal" string plus reference counting. rtlstring->buffe

Day5 - Python基础5 常用模块学习

Python 之路 Day5 - 常用模块学习 本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,

python之web模块学习-- urllib

准备写一些列的 python之web模块学习,基本上涉及常用的的web模块,包括 urllib.urllib2.httplib.urlparse.requests,现在,开始我们的第一个模块的学习吧. 1  urllib简介 python urllib 模块提供了一个从指定的URL地址获取网页数据,然后对其进行分析处理,获取我们想要的数据. 2  常用方法 2.1  urlopen  -- 创建一个类文件对象 为读取指定的URL help(urllib.urlopen) urlopen(url,

Python subprocess模块学习总结

从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息 一.subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec

python017 Python3 模块

Python3 模块在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了.为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块.模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用 python 标准库的方法.下面是一个使用 python 标准库中模块的例子. #!/usr