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标准文档。

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

  1. python3+ 模块学习 之 subprocess

    subprocess 模块方法: call() check_call() check_output() 以上三个方法用于创建一个子进程,父进程等待子进程结束.若shell = true, 则shell ...

  2. 吴裕雄--天生自然python学习笔记:Python3 模块

    Python3 模块 在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了. 为此 Python 提供了一个办 ...

  3. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  4. (转)Python3 模块3之 Urllib之 urllib.parse、urllib.robotparser

    原文:https://blog.csdn.net/qq_36148847/article/details/79153738 https://blog.csdn.net/zly412934578/art ...

  5. python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法

    python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...

  6. python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码

    python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...

  7. python3.4学习笔记(十六) windows下面安装easy_install和pip教程

    python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...

  8. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  9. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

随机推荐

  1. mysql 根据某字段特定值排序

    比如: 表 :user 字段:orders (值为 1,2,3) 要求根据字段  orders 按2 -> 1 -> 3 排序 使用以下语句实现SELECT *FROM userORDER ...

  2. php部分---PDO;

    PDO数据访问抽象层 PDO的三个功能: 1.操作其它数据库2.事务功能3.防止SQL注入攻击 操作数据库: 造PDO对象 //$dsn = "mysql:dbname=mydb;host= ...

  3. [BCB] C++ Builder 绘图 绘制直线 —— 基于像素

    大三的这前半个学期了,又遇上了这个精通(滑稽) Delphi的老师,人还挺好的其实. 关于他对分辨率的吐槽呀,对Delphi的赞美啊,都是非常幽默的.另外我倒是很欣赏他对他的笔记本的保养[dell i ...

  4. MySql 的常用优化

    1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...

  5. get------引用接口

    关于引用接口   1.    通过get方式 2.   String  poiUrl="http://接口地址?接口ID=接口给你的ID&参数1=?&参数2=?&参数 ...

  6. 05_动手动脑之String.equals()方法的实现代码

    Question: 请查看String.equals()方法的实现代码,注意学习其实现方法. Answer: java中的String.equals()方法的实现代码: equals()法是根类Obj ...

  7. Sequential List

    Sequential ListSequential list storage structure:#define LIST_INIT_SIZE 20 #define LIST_INCREASE 10t ...

  8. 差分:IncDec Sequence 差分数组

    突然就提到了这个东西,为了不再出现和去年联赛看见二分没学二分痛拿二等第一的情况,就去学了一下,基础还是比较简单的-- 先看一个经典例题: 给定一个长度为n的数列{a1,a2...an},每次可以选择一 ...

  9. 不能从const char *转换为LPCWSTR

    编译器有时候会根据编码方式来选择定义为LPCWSTR还是LPCTSTR LPSTR: 32bit指针 指向一个字符串,每个字符占1字节. 相当于 char *   LPCSTR: 32-bit指针 指 ...

  10. J2EE学习(2)--何謂容器【良葛格学习笔记搬】

    何謂容器 對於Java程式而言,JVM(Java Virtual Machine)是其作業系統,.java編譯為.class檔案,.class對於JVM而言,就是其可執行檔,你的Java程式基本上只認 ...