什么是规律性?

这更像是计算机科学问题,而不是编程问题,但我认为这是所有相关网站中最好的问题。 当我发现正则表达式并查找该术语时,我认为这种“规律性”属性指的是表达式的语言具有可定义的结构模式。然而,在阅读有关主题及其背后的理论时,我了解到有些种类的语言并不常规,但从定义它们的方式来看,很明显一个模式可以与它们相匹配。一种这样的语言是(a ^ n)(b ^ n)。显然这是一种模式,但这不是一种常规语言。那么现在我想知道常规语言是什么使它们成为常规语言,这种语言不是吗?     
已邀请:
该名称的词源来自Kleene在20世纪50年代的作品,该作品使用他为此目的创建的数学符号来描述常规集。看到这个。     
直观地解释计算机科学是......棘手的。我会试一试,但请记住,其中一些将“足够接近”,但理论上并不严谨。 常规语言是可以由计算机等同于有限自动机(DFA / NDFA)的机器决定的语言。有限自动机可以被认为是纯粹在状态下运行的机器,没有存储。因此,您可以看到anbn不能是常规的,因为它需要一台可以计算a和b的数量的机器(因此必须具有无限的*存储容量)才能进行比较。 为了比较,(abc)n是规则的,因为重复的次数是无关紧要的。 要获得更严格(并且相应更密集的视图),请查看维基百科文章和链接页面。 *无限无关紧要,但我提到完整性。可能更容易将其视为“幸运,总是足够”的存储。     
也许维基百科关于常规语言的文章可以比我们更好地解释它。但是,我会试一试。 从理论角度来看,常规语言(字符串集)是可以使用有限状态自动机生成的语言。在程序员方面,这相当于说它可以使用正则表达式生成。因此,所有有限语言(字符串集)都是规则的,但是有一些无限的语言,例如使用FSA或正则表达式无法识别的anbn(n a的所有字符串的语言,后跟n b)。有更强大的计算设备(例如使用图灵机建模的现代计算机)可以识别这些语言。 在字符串搜索的编程中使用正则表达式的原因是,它们可以识别对我们程序员很重要的绝大多数字符串,同时可以使用有限状态自动机来实现非常快速的搜索。     
regular expression
中的单词
regular
指的是常规的数学概念,而不是英语概念。就像数学中的
prime
这个词与优质牛肉的关系一样。 它由CS(这是数学的一个分支)继承,用于指代更具体的概念:http://en.wikipedia.org/wiki/Regular_language     
正则表达式不是很规律,名字是词源。     

要回复问题请先登录注册