izh*_*hak 4 regex theory perl finite-automata recursive-descent
用于解析字符串的引擎(在Perl中称为"正则表达式")与书中术语"正则表达式"所知的非常不同.
所以,我的问题是:是否有一些文档描述了Perl的regexp实现,以及它与经典实现有何不同之处(通过经典我的意思是可以真正转换为普通DFA/NFA的正则表达式)以及如何有用?
谢谢.
Perl正则表达式当然称为Perl正则表达式,简称正则表达式.它们也可以称为模式或规则.但它们是,或者至少可以是递归下降解析器.它们是使用递归回溯器实现的,但如果您希望将DFA可解决的任务卸载到它,则可以交换DFA引擎.
以下是关于这些问题的一些相关引用,所有的内容 - 以及一些文本:) - 我的:
您可以通过创建正则表达式(或正则表达式)来指定模式,然后Perl的正则表达式引擎(本章其余部分的"引擎")接受该表达式并确定模式是否(以及如何)与您的数据匹配.虽然您的大多数数据可能都是文本字符串,但是没有什么可以阻止您使用正则表达式来搜索和替换任何字节序列,甚至是您通常认为的"二进制"数据.对于Perl,字节只是恰好具有小于256的序数值的字符.
如果您熟悉其他场所的正则表达式,我们应该警告您Perl中的正则表达式有点不同.首先,它们在理论意义上并不完全"正常",这意味着它们可以比计算机科学课程中传授的传统正则表达式做得更多. 其次,它们经常在Perl中使用,它们有自己的特殊变量,运算符和引用约定,这些约定紧密集成到语言中,而不是像任何其他库一样松散地用螺栓固定.
- 编程Perl,由Larry Wall,Tom Christiansen和Jon Orwant编写
这是关于模式匹配的启示录,通常与 我们称之为"正则表达式"的行为有关,这些正则表达式与实际正则表达式仅略有关系.尽管如此,这个术语随着模式匹配引擎的功能而增长,所以我不打算在这里尝试对抗语言需求.然而,我会将它们称为"正则表达式"(或"regexen",当我处于盎格鲁 - 撒克逊的情绪时).
- Perl6 Apocalypse 5:模式匹配,Larry Wall
那里有很多新的语法,所以让我们慢慢地逐步介绍它,从:
$file = rx/ ^ <$hunk>* $ /;
Run Code Online (Sandbox Code Playgroud)
该语句创建一个模式对象.或者,正如它在Perl 6中所知,一个"规则".人们可能仍会称它们为"正则表达式"或"正则表达式"(并且关键字
rx反映了这一点),但Perl模式很久以前就不再像"常规"那样,所以我们会尽量避免使用这些术语.[更新:我们已经复活了"正则表达式"一词来指代这些模式.当我们现在说"规则"时,我们特别指的是你将在语法中使用的那种正则表达式.见S05.]
- Perl6 Exegesis 5:模式匹配,作者:Damian Conway
本文档总结了Apocalypse 5,它是关于新的正则表达式语法. 我们现在试着将它们称为正则表达式而不是"正则表达式",因为它们很长时间都不是正则表达式,我们认为流行的术语"正则表达式"正在成为一个具有以下精确含义的技术术语: "你做模式匹配的东西,有点像正则表达式".另一方面,重新设计的目的之一是使我们的模式的一部分更适合在传统的正则表达式和解析器语义下进行分析,并且需要仔细区分我们的模式和语法的哪些部分被视为声明性的,以及哪些部分是程序性的.
在任何情况下,当引用语法中的递归模式时,术语规则和令牌通常优于正则表达式.
- Perl6剧情简介5:Regexes and Rules,作者:Damian Conway,Allison Randal,Patrick Michaud,Larry Wall和Moritz Lenz
| 归档时间: |
|
| 查看次数: |
861 次 |
| 最近记录: |