首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

梳理正则表达式发展史

这篇论文描述了一种叫做 "正则集合(Regular Sets)" 的数学符号,引入了正则表达式的概念。 60 年代,Unix 之父 Ken Thompson 发表了 《正则表达式搜索算法》 论文。...并且根据这篇论文的算法,将正则引入到编辑器 qed ,以及之后的编辑器 ed 中,然后又移植到了我们熟悉的文本搜索工具 grep 中。...作者看来 ERE 实际上是 BRE 的一个扩展标准,开发者使用 ERE 能书写更简单的正则表达式,不需要对某些字符进行特殊转义。...此外,除了关心正则表达式的标准之外,强烈推荐读者细读正则表达式的执行引擎,或许能帮助你写出更性能更好的正则表达式,避免因为正则表达式的地狱回溯导致的应用程序的 OOM。...- 掘金 PCRE、GNU BRE、GNU ERE 对比 招人正则匹配中,欢迎扫码命中 腾讯程序员视频号最新视频

2.2K40

Python 200个标准库汇总!

文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 stringprep:互联网字符串准备工具...calendar:通用月份函数 collections:容器数据类型 collections.abc:容器虚基类 heapq:堆队列算法 bisect:数组二分算法 array:高效数值数组 weakref...ASCII码间的转化 quopri:MIMEquoted - printable数据的编码与解码 uu:uuencode文件的编码与解码 互联网协议与支持 webbrowser:简易Web浏览器控制器...:最常用的POSIX调用 pwd:密码数据库 spwd:影子密码数据库 grp:组数据库 crypt:Unix密码验证 termios:POSIX风格的tty控制 tty:终端控制函数 pty:伪终端工具...希望此文能帮助到大家,欢迎补充还常用的Python内置模块。

1.3K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 200个标准库汇总

    文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 stringprep:互联网字符串准备工具...calendar:通用月份函数 collections:容器数据类型 collections.abc:容器虚基类 heapq:堆队列算法 bisect:数组二分算法 array:高效数值数组 weakref...ASCII码间的转化 quopri:MIMEquoted - printable数据的编码与解码 uu:uuencode文件的编码与解码 互联网协议与支持 webbrowser:简易Web浏览器控制器...:最常用的POSIX调用 pwd:密码数据库 spwd:影子密码数据库 grp:组数据库 crypt:Unix密码验证 termios:POSIX风格的tty控制 tty:终端控制函数 pty:伪终端工具...希望此文能帮助到大家,欢迎补充还常用的Python内置模块。

    92210

    学1个月爬虫就月赚6000?别被骗了,老师傅告诉你爬虫的真实情况!

    比如说我们去爬1个某个网站的文章,这个网站没有带反爬机制,那么用 requests 等库就够了,用 XPath、BeautifulSoup、PyQuery 或者正则表达式解析一下网页的源码,再加个文本写入存下来就完事了...那么我们回顾一下前面那个小伙子的事情,上面这些东西对于新手来说1个月能学完吗?我觉得难度不小,我不说别的,就说Python入门这一块,就包含了不少的东西。...网页反爬机制的常见操作就是验证码,什么滑块验证啊、实物勾选啊、加减法啊等等的,招式层出不穷,这个时候你就得知道如何去应付这些常见的验证码了。...而如果使用智能化解析的话,不论是哪个网站,你只需要把网页的url传递给它,就可以通过算法智能识别出标题、内容、更新时间等信息,而不需要重复编写提取规则。...可能永远都没有巅峰…只要一天没有拥有强者的发型(全秃),我就不敢说我看到了巅峰… 我隐约感到,爬虫做到了极致,既能干全栈,又能做数据分析,说不好还是算法大师,没准在人工智能还能有所建树,这难到就是爬虫的巅峰吗

    1.6K30

    刨根究底正则表达式之零——前言 2)  有多个多义元字符,特别容易使人混淆、迷乱

    其具体的处理逻辑和算法实现是由语言解析引擎(编译器或解释器)来负责的。...当然,这样一来,这些由语言解析引擎实现的处理逻辑和具体算法其通用性就会较差,只能适用于某些特定业务或特定领域。...的算法基本上由语言解析引擎自动实现,程序员灵活设计、自由发挥的空间很小,因此DSL几乎没有通用性(而且DSL大都是非图灵完备的语言),只能专用于解决特定业务方向和业务领域的问题。...那么,真的在不重造轮子、不陷入DFA、NFA等技术细节的基础上,也能搞懂正则表达式? 我自己的体会是,能!...sub-regex)等 五)匹配模式详解,包括:i、s、m、x、g等常用匹配模式 六)POSIX字符组方括号表达式、排除型POSIX字符组方括号表达式 七)字符组运算:字符组减法运算、字符组逻辑与运算

    70040

    正则表达式“派别”简述

    但是,我们在使用linux下的文本处理工具如awk、sed等时,正则表达式的语法貌似还不一样,在awk中能正常工作的正则,在sed中总是不起作用,这是为什么呢?...Ken Thompson大牛在1968年发表了Regular Expression Search Algorithm论文,紧接着Thompson根据这篇论文的算法实现了qed,qed是unix上编辑器ed...在1986年,POSIX(Portable Operating System Interface)标准公诸于世,POSIX制定了不同的操作系统都需要遵守的一套规则,当然,正则表达式也包括其中。...POSIX标准 POSIX把正则表达式分为两种(favor):BRE(Basic Regular Expressions)与ERE(Extended Regular Expressions )。...Expressions Regular_expression Linux/Unix工具与正则表达式的POSIX规范

    51010

    深入正则表达式(3):正则表达式工作引擎流程分析与原理释义

    NFA VS DFA 首先,正则表达式在计算机看来只是一串符号,正则引擎首先肯定要解析它。NFA引擎只需要编译就好了;而DFA引擎则比较繁琐,编译完还不算,还要遍历出表达式中所有的可能。...DFN不回溯,所以匹配快速,因而不支持捕获组,支持反向引用和$number引用 传统的 NFA引擎 传统的 NFA 引擎运行所谓的“贪婪的”匹配回溯算法,以指定顺序测试正则表达式的所有可能的扩展并接受第一个匹配项...《精通正则表达式》书中说POSIX NFA引擎不支持非贪婪模式,很明显JavaScript不是POSIX NFA引擎。...虽然都是分手,但你们应该能理解它们的区别吧。 为了让大家更好的理解,我举一个例子: 你和一个女孩子(或者男孩子)谈恋爱,接触了半个月后发现实在不合适,于是提出分手。这不叫回溯,仅仅是不合适而已。...虽然都是分手,但你们应该能理解它们的区别吧。 网络上有很多文章都认为上面第二个例子发生了回溯。至少根据我查阅的资料,第二个例子发生的情况不能被称为回溯。当然也有可能我([马蹄疾]是错的,欢迎讨论。

    1.8K00

    超全汇总!200 多个 Python 标准库介绍

    互联网协议与支持 多媒体 国际化 编程框架 Tk图形用户接口 开发工具 调试 运行时 解释器 导入模块 Python语言 其它 Windows相关 Unix相关 文本 string:通用字符串操作 re:正则表达式操作...注册表与基类的编解码器 数据类型 datetime:基于日期与时间工具 calendar:通用月份函数 collections:容器数据类型 collections.abc:容器虚基类 heapq:堆队列算法...bisect:数组二分算法 array:高效数值数组 weakref:弱引用 types:内置类型的动态创建与命名 copy:浅拷贝与深拷贝 pprint:格式化输出 reprlib:交替repr()...ASCII码间的转化 quopri:MIME quoted - printable数据的编码与解码 uu:uuencode文件的编码与解码 HTML与XML html:HTML支持 html.parser...:最常用的POSIX调用 pwd:密码数据库 spwd:影子密码数据库 grp:组数据库 crypt:Unix密码验证 termios:POSIX风格的tty控制 tty:终端控制函数 pty:伪终端工具

    1.1K30

    sed & awk 第二版学习(二)—— 正则表达式语法

    正则表达式区分大小写,因此“A”不匹配“a”。sed 和 awk 为使用正则表达式提供了不区分大小写的选项。 接受正则表达式的程序必须首先解析正则表达式的语法来产生一个模式。...在正则表达式中,除下表中的元字符外,任意字符都被解释为只匹配它本身的字面值。 特殊字符 用途 . 匹配除换行符以外的任意单个字符。在 awk 中,句点也能匹配换行符。...(用于 POSIX 的 egrep 和 POSIX awk 而不是传统的 egrep 或 awk。) 元字符汇总 元字符在正则表达式中有特殊的含义。下面介绍每个元字符的用法。 1....仔细检查测试的结果,比较输出和输入,可以大大提高对正则表达式的理解。可以按下面的方式解析模式匹配的结果: Hits(命中):要匹配的行。 Misses(未命中):不要匹配的行。...\.DS "[^1]" (3)POSIX 字符类补充 POSIX 标准定义了两类正则表达式:基本的正则表达式(BRE),grep 和 sed 使用;扩展的正则表达式,egrep 和 awk

    7610

    公司架构师常常提起的DNS负载均衡是个什么鬼?

    能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发......源码解析 Java 并发源码 来源:www.cnblogs.com/liangxiaofeng /p/5169404.html 传统思路的局限性 CDN是怎么做的 你知道DNS是怎么工作的吗?...同样的做法也可以借鉴到传统的 BS 架构中,我们也可以把用户的请求直接分流到不同的服务器上,而不必经过一个统一的节点中转。 这个分流是通过什么做到的呢?...但事情真的这么简单吗?它是怎么知道这个域名所对应的ip地址呢?...加入方式,长按下方二维码噢: 已在知识星球更新源码解析如下: 最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB

    66820

    20.linux 文件管理命令【md5sum】MD5 函数值计算和检查【awk】模式匹配语言

    说明 MD5 算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。...MD5 全 称是报文摘要算法(Message Digest Algorithm 5),此算法对任意长度的信息逐位进行 计算,产生一个二进制、长度为 128 位(十六进制长度就是 32 位)的“指纹”(称...awk:模式匹配语言作用:利用一组用户提供的命令来将一组文件和用户提供的扩展正则表达式进行比较,一 次一行,然后在任何与扩展正则表达式匹配的行上执行操作。...-W posix 打开兼容模式。...-W re-interval or --re-inerval 允许间隔正则表达式的使用,参考 grep 中的 POSIX 字符类,如括号表达式[:alpha

    11710

    一个基于Java的开源URL嗅探器

    同时,很多浏览器有不同的行为,所以,我们要找到一种URL文本规则能够被大部分流行的浏览器解析,它不是像RFC中定义语法那样简单。 最初,我们开始第一种解决方案,基于正则表达式。...这样做的结果是,当解析大文本的时候,将耗费很长的时间,有些一次解析甚至是秒级别的。但是,我们的需要每秒处理数十万数量级的的 URL,这么耗时的这个方案明显是不可行的。...同时,我们还发现正则表达式有一个缺点,就是:匹配易,处理分析难、维护难。就这样,我们的 URL探测器诞生了。 为了取代使用正则表达式,我们手工打造了一个有限状态机来解析出在文本中的URL。...如果状态机在任何一个位置撞到一个非预期的字符,它将返回上一次最新的结束状态,同时重新开始这个算法。 这个最棘手的部分是匹配字符。这些字符实际上,有可能在多个状态中存在。...123 123 123 / IPv6地址的 – FTP:// [:] /你好 IPv4映射的IPv6地址 – http://[fe30:4:3:0:192.3.2.1]/ 另一个令人兴奋的是,它也能识别已经被识别过的

    1.7K20

    正则表达式详解

    随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。...正则表达式的限定符有:   字符 描述 * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 + 匹配前面的子表达式一次或多次。...([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径 /^(?...8.posix和perl标准的正则表达式区别 PHP同时使用两套正则表达式规则,一套是由电气和电子工程师协会(IEEE)制定的POSIX Extended 1003.2兼容正则(事实上PHP对此标准的支持并不完善...,仔细研究ASCII码,你会发现[W-c]等价于[WXYZ//^_`abc] POSIX兼容正则和PERL兼容正则“[]之内”“不一致”的元字符: - POSIX兼容正则中[a-c-e]的指定会抛出错误

    1.4K10

    正则表达式优化

    正则表达式优化 ——《精通正则表达式》总结 [TOC] 第4章:表达式的匹配原理 引擎 DFA (Deterministic Finite Automaton 确定有穷自动机): 常见的只有MySQL...,文本主导,不支持反向引用和捕获括号,但快 传统型 NFA(Non-非): 大多数语言,表达式主导,编译快,内存少,写法不同有性能差异 标准 POSIX NFA: leftmost-longest,...走其中一个分支,并保存备用状态 如果不成功再回溯尝试另一个分支 第5章:正则表达式实用技巧 (多选|分支)排序可能影响匹配结果 第6章:打造高效正则表达式 减少测试和回溯 如果顺序不影响结果时更多匹配的放前面...+开始) 开始字符====比={4}快100倍 内嵌字符(Boyer-Moore字符串检索算法后前移, 需要前面固定个数) 长度小于时不运行 正则优化 连接当做整体 .*特殊优化比(?:.)...避免括号内外都是量词 避免指数级(超线性)匹配 使用占有优先量词(+不会回溯)减少状态 \d{4}量词优化比\d\d\d\d快(Java 几倍 Python 20%) 引擎识别捕获括号是否需要 诀窍 xx*比x+能适应的优化更多

    1.2K10

    一个基于Java的开源URL嗅探器

    同时,很多浏览器有不同的行为,所以,我们要找到一种URL文本规则能够被大部分流行的浏览器解析,它不是像RFC中定义语法那样简单。 最初,我们开始第一种解决方案,基于正则表达式。...\\d+){4,})|localhost)$ 这样做的结果是,当解析大文本的时候,将耗费很长的时间,有些一次解析甚至是秒级别的。...同时,我们还发现正则表达式有一个缺点,就是:匹配易,处理分析难、维护难。就这样,我们的 URL探测器诞生了。 为了取代使用正则表达式,我们手工打造了一个有限状态机来解析出在文本中的URL。...如果状态机在任何一个位置撞到一个非预期的字符,它将返回上一次最新的结束状态,同时重新开始这个算法。 这个最棘手的部分是匹配字符。这些字符实际上,有可能在多个状态中存在。...123 123 123 / IPv6地址的 – FTP:// [:] /你好 IPv4映射的IPv6地址 – http://[fe30:4:3:0:192.3.2.1]/ 另一个令人兴奋的是,它也能识别已经被识别过的

    1.6K110

    【C++】开源:Boost库常用组件配置使用

    Boost库包含了多个模块,每个模块都提供了不同领域的功能和工具,覆盖了诸如字符串操作、数据结构、算法、日期时间处理、文件系统、线程、网络、正则表达式等各个方面。...统计算法:Boost.Math 包含一些统计计算的算法,如平均值、标准差、方差、协方差和相关系数等。这些算法可以用于描述和分析数据集的统计特性。...Boost.Time特性 boost::posix_time:提供了对时间点和时间间隔进行操作的类和函数。它支持高精度的时间表示,并提供了各种算术和比较运算符,以及格式化和解析时间的能力。...它支持日期的算术和比较运算符,以及格式化和解析日期的能力。它还提供了一些有用的函数,如计算某个日期的下一个工作日、计算某个月份的天数等。...几何算法:Boost.Geometry 提供了许多几何算法,包括距离计算、相交检测、包围盒计算、缓冲区计算等。这些算法可以应用于几何对象上,以解决各种几何问题。

    67710

    夯实Python基础(7)

    frozenset 映射类型 --- dict 上下文管理器类型 其他内置类型 特殊属性 内置异常 基类 具体异常 警告 异常层次结构 文本处理服务 string --- 常见的字符串操作 re --- 正则表达式操作...基础 日期 和 时间 数据类型 calendar --- 日历相关函数 collections --- 容器数据类型 collections.abc --- 容器的抽象基类 heapq --- 堆队列算法...lzma --- 用 LZMA 算法压缩 zipfile --- 使用ZIP存档 tarfile --- 读写tar归档文件 文件格式 csv --- CSV 文件读写 configparser --...base64 --- Base16, Base32, Base64, Base85 数据编码 binhex --- 对binhex4文件进行编码和解码 binascii --- 二进制和 ASCII 码互转...py_compile --- Compile Python source files compileall --- Byte-compile Python libraries dis --- Python 字节码反汇编器

    60930
    领券