与正则表达式有关 sre_yield

Apache
Python
Linux
Google
2015-04-16
大胖森

sre_yield 是用于生成正则表达式匹配结果的 Python 模块,并尽可能的匹配到所有有效值。它采用了解析正则表达式的方式,所以你可以得到一个更加精确的结果,而不仅仅只是分散的字符串。

sre_yield 通常都无法处理反向引用、lookarounds 正则表达式,除此之外,还有在这几种情况下也无法处理;

  • The maximum value for repeats is system-dependant -- CPython's sre module there's a special value which is treated as infinite (either 2**16-1 or 2**32-1 depending on build).  In sre_yield, this is taken as a literal, rather than infinite, thus (on a 2**16-1 platform):

  • The re module docs say "Regular expression pattern strings may not contain null bytes" yet this appears to work fine.

  • Order does not depend on greediness.

  • The regex is treated as fullmatch.

  • sre_yield is confused by even the simplest of anchors:

代码示例:

>>> import random
>>> v = sre_yield.AllStrings('[abc]{1,4}')
>>> len(v)
120

# Now random.choice(v) has a 3/120 chance of choosing a single letter.
>>> random.seed(1)
>>> sum([1 if len(random.choice(v)) == 1 else 0 for _ in range(120)])
3

# xeger(v) has ~25% chance of choosing a single letter, because the length
and match are chosen independently.
> from rstr import xeger
> sum([1 if len(xeger('[abc]{1,4}')) == 1 else 0 for _ in range(120)])
26


加载中

评论(0)

暂无评论

暂无资讯

4
回答
关于yield实现异步的问题,请大侠解惑
SupNatural 的回答 2016/06/14 13:53
最佳答案
import socket socket.setdefaulttimeout(5) def ping(): conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM) while True: ipport = yield try: conn...

没有更多内容

加载失败,请刷新页面

没有更多内容

python 正则表达式笔记1

(1) import re (2) .号(点号)表示出了换行符之外的所有字符 re.search(r'love','i love you') (3) 如果要匹配"."(点号)加上反斜杠"\",如: re.search('\.','i love you.com') <_sre.SRE_M...

2016/08/04 22:58
2
0
SRE的含义及与 DevOps 如何关联?

虽然站点可靠性工程师(site reliability engineer SRE)角色在近几年变得流行起来,但是很多人 —— 甚至是软件行业里的 —— 还不知道 SRE 是什么或者 SRE 都干些什么。为了搞清楚这些问题...

2018/12/10 08:26
168
0
谷歌运维新书《网站可靠性工作手册,SRE最佳实践》

最近谷歌发布了一本关于运维新书《The Site Reliability Workbook — Practical Ways to Implement SRE》(网站可靠性工作手册,SRE最佳实践)。这是继《Site Reliability Engineering》后,...

2018/07/27 10:38
413
0
谷歌GAE运维揭秘:如何做到每天处理超过1000亿个请求

在这篇博客帖中,我们请到了Chris Jones(他做了三年半Google App Engine运维工程师,到目前为止已经当了9年的谷歌运维工程师),来探索更多关于在Google上运行产品系统的细节。Chris也是《S...

2016/05/20 15:35
7
2
python正则表达式——常用函数

### re.compile() python re模块提供了一个正则表达式引擎接口,可以将REString编译成对象,并用编译好的对象来匹配。如果一个正则表达式经常用来做匹配,那么可以编译,这样速度更快。 - 基...

2015/10/21 23:14
68
0
python 正则表达式笔记2

(1)模式编译 p = re.compile(r'[A-Z]') p.search('I love you') <_sre.SRE_Match object; span=(0, 1), match='I'>...

2016/08/07 12:58
6
0
Python 解释器自动载入的模块

当 Python 解释器在标准模式下启动时, 一些模块会被解释器自动导入, 用于系统相关操作。例如内建的模块是被自动导入的,一些内建的函数可以直接使用。

2016/05/20 19:30
168
2
中小团队快速构建SQL自动审核系统

SQL审核与执行,作为DBA日常工作中相当重要的一环,一直以来我们都是通过人工的方式来处理,效率低且质量没办法保证。为了规范操作,提高效率,我们决定引入目前市面上非常流行的SQL自动审核...

2018/08/03 09:08
137
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部