自从我学习我的正式语言大学课程,我偶然发现了这些迷人的职位(一 两),它描述了如何使用一个找到一个素数的正则表达式。正如我所说的,是regexp而不是正则表达式。由于正则表达式可以匹配有限状态自动机计算的字符串,而FSA不能找到素数,因此博客文章中显示的regexp并不完全是正则表达式,因为它会回溯以匹配字符串。
由于我从未真正使用过任何正则表达式,因此,我的问题是:
我如何仅通过查看就可以从“真正的”正则表达式中立即识别出一个正则表达式?
定义:通过正则表达式,我指的是形式语言中定义的概念。regexp是指现代编程语言支持的概念。regexp语法通常包含其他功能,例如反向引用。在编程语言中看到的正则表达式严格比形式语言样式的正则表达式更强大。
5
Regexp只是正则表达式的缩写。素数的计算基于Perl hack,而不是基于正则表达式。
这很简单。常规语言使用串联,重复和交替。每当引擎支持的功能不等同于这些功能时,它都是非常规的。
—
Kilian Foth,2015年
@Yannis如果跳过篱笆到达CS,那就不再是事实了。在编程语言中看到的正则表达式严格地比(形式语言样式)正则表达式更强大,并且缩写形式“正则表达式”按惯例(我不知道它的广泛性)用于前者,而不是后者类。
—
拉斐尔
@KilianFoth但这并不是一个真正有用的描述。例如,您可以在不增加正则表达式功能的情况下向其添加否定符(或者实际上是布尔连接符的任何有限集合)。
—
David Richerby