Python的regex模块——更强大的正则表达式引擎(未完待写)

Python自带了正则表达式引擎(内置的re模块),不过支持的特性比较单薄,以下这些特性都不支持:

  • 固化分组    Atomic grouping
  • 占有优先量词    Possessive quantifiers
  • 可变长逆序环视    Variable-length lookbehind
  • 递归匹配    Recursive patterns

Matthew Barnett为Python写了一个更强大正则表达式引擎——regex模块,可以替代内置的re模块。除了上面说到的几个特性,还有很多新东西。

先说安装regex,在命令行执行这个就可以了:

pip install regex

regex分为版本0版本1两个工作模式,其中的版本0兼容现有的re模块:

  版本0  (兼容re模块) 版本1
启用方法
设置.VERSION0或.V0标志,或者在表达式里写上(?V0)。

如果什么设置都不做,默认就是版本0。


设置.VERSION1或.V1标志,或者在表达式里写上(?V1)。

.split()的行为 不能在零宽匹配处切割字符串。 可以在零宽匹配处切割字符串。
零宽匹配 像re那样处理。 PerlPCRE那样处理。
表达式里面的标识 只能作用于整个表达式,且不可关闭。 可以作用于整个或部分表达式,可以关闭。
字符组 只支持简单的字符组。 字符组里可以有嵌套的集合,也可以做集合运算(并集、交集、差集、对称差集)。
字符大小写 默认只支持简单的大小写。 默认支持全部Unicode字符的大小写。
时间: 2024-10-29 10:46:31

Python的regex模块——更强大的正则表达式引擎(未完待写)的相关文章

[daily][optimize] 去吃面 (python类型转换函数引申的性能优化)(未完待续)

前天,20161012,到望京面试.第四个职位,终于进了二面.好么,结果人力安排完了面试时间竟然没有通知我,也没有收到短信邀请.如果没有短信邀请门口的保安大哥是不让我进去大厦的.然后,我在11号接到了面试官直接打来的电话,问我为啥还没到,我说没人通知我我不知道呀.结果我就直接被他邀请去以访客的身份参加面试了.不知道人力的姑娘是不是认识我,且和我有仇,终于可以报复了... 然后,我终于如约到了,面试官带着我去前台登记.前台的妹子更萌...认为我是面试官,面试官是才是来面试的.我气质真的那么合吗?

Python基础day-8[装饰器补充,迭代器(未完)]

wraps模块: 让函数保留原来的说明信息. 在闭包函数上面 @wraps 可以把原代码的解释,引用到装饰器中,让用户彻底无法感知装饰器的存在 使用 func.__doc__ 和 print(help(func))来查看函数的注释信息 from functools import wraps import time def coutime(func): @wraps(func) #调用wraps模块 def wrapper(*args,**kwargs): # 'a1231231231231232

python核心编程第二版 第二章练习题解答 未完待续

有人可能会想,连2-1和2-2这样的题目都回答,够无聊的啊.因为现在处于并长期处于成为大师的第一阶段------守的阶段 2-1 >>> a= '123' >>> a '123' >>> print (a) 123 a是字符串123,如果格式化输出有问题报如下错误: >>> print ('a is %d'% a) Traceback (most recent call last): File "<stdin>&

java 字符串(正则表达式)未完

正则表达式: 其实就是用于操作字符串的一个规则.(以某种方式描述字符串) 基础: 1.描述一个整数:\d(表示一位数字) \\d(\\ 表示要插入一个正则表达式)表示一位数字 \\\\  插入一个普通的反斜杠 2.一个或多个之前的表达式:使用  +  (-?\\d+     表示:可能有一个负号后面跟着一位或多位数) 3.表示 或 操作: | ("+911".matches("(-|\\+)?\\d+")

Python学习笔记——基础篇【第二周】未完待续

python介绍 cpython print("alex xx")  c解释器 .pyc(字节码)  机器码 cpu jphthon print("alex xx") java解释器 Java字节码 机器码 cpu irongpython print("alex xx") C#解释器 C#字节码 机器码 cpu ruby js... pypy print("alex xx") 解释器 字节码  机器码 cpu 最快 代码执行的

Python+Selenium使用Page Object实现页面自动测试 -未完待续

Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况. 当页面元素id变化时,只需要更改测试页Class中页面的属性即可. Page Object模式是一种自动化测试设计模式,将页面定位和业务操作分开,提高用例的可维护性. unittest是一种单元测试

正则表达式和python的re模块

正则表达式和python的re模块 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 什么是正则表达式 2. 元字符使用一览表: 3. 字符转义 4. 重复 5. 字符类 6. 分支条件 7. 分组 8. re模块 8.0.1. compile 8.0.2. match和search 8.0.3. split 8.0.4. findall 8.0.5. finditer 8.0.6. sub 8.0.7. subn 9. 参考资料 什么是正则表达式 在编写处理字符串的

python之基础篇(十一)——正则表达式RE模块

防伪码:忘情公子著 正则表达式(RE)是一种小型的.高度专业化的编程语言,在python中,它通过re模块实现. 正则表达式可以实现以下功能: 为想要匹配的相应字符串集指定规则: 能够匹配不定长的字符集: 可以指定正则表达式的一部分的重复次数: 可以使用RE以各种方式来修改或分割字符串 正则表达式模式被编译成一系列的字节码,然后由C编写的匹配引擎执行. 字符匹配: 普通字符: 大多数字母和字符一般都会和自身匹配. 如正则表达式test会和字符串"test"完全匹配 元字符: []: 常

Python之re模块 - 正则表达式操作

一.前言 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.而正则表达式就是一种用来描述字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了,否则,该字符串就是不合法的. 学习本章知识,你需要有了解正则表达式基础, 网上快速入门教程一抓一大把,这里就不再叙述了. 二.re 模块 Python 的 re 模块提供了与 Perl 相似的正则表达式匹配操作, Unicode 字符串也同样适用.