我知道perl正则表达式是一种次要的事实标准,但为什么没有人提出一套通用的标准符号,语法和行为?
答案 0 :(得分:16)
IEEE associated with the POSIX effort有一个标准。真正的问题是“为什么不是每个人都遵循它”?答案可能是它在贪婪匹配方面并不像PCRE那么复杂,而不是。
答案 1 :(得分:9)
实际上,是正则表达式标准(POSIX),但它很糟糕。因此人们扩展他们的RE引擎以满足他们的应用需求。 PCRE(与Perl兼容的正则表达式)是与Perl的RE引擎兼容的正则表达式的伪标准。这一点尤为重要,因为您可以将Perl的引擎嵌入到其他应用程序中。
答案 2 :(得分:2)
因为制定标准很难。几乎不可能让足够多的人同意任何使其成为官方标准的东西,更不用说像正则表达式那样复杂的东西了。 Defacto标准更容易获得。
例证:HTML 5预计在2022年之前不会成为官方标准。但规范草案已经可用,标准的主要功能将在标准正式出现之前就开始出现在浏览器中。
答案 3 :(得分:1)
我研究了这个并且找不到任何具体的东西。我的猜测是因为正则表达式通常是一个工具 ON 工具,因此它必然具有特定于平台和工具的扩展。
例如,在Visual Studio中,您可以使用正则表达式来查找和替换源代码中的字符串。他们添加了以下内容:i匹配标识符。在其他工具的其他平台上,标识符可能不是适用的概念。实际上,也许其他平台和工具可以保留冒号字符来逃避表达。
这样的差异使得这一点特别难以标准化。
答案 4 :(得分:0)
Perl是第一个(或接近第一个接近danm),虽然它是perl而我们都喜欢它,但是有些人觉得它需要更多的润色(即特征)。这就是新类型的用武之地。
他们开始正常化,.NET中使用的正则表达式与其他语言中使用的正则表达式非常相似,我认为慢慢地人们开始统一,但是有些人习惯于他们的perl方式并且不想改变。
答案 5 :(得分:0)
只是一个猜测:从来没有一个流行的版本被认为是规范标准,并且没有标准的实现。每个来到并重新实现它的人都有自己的想法,如何让它“更好”。
答案 6 :(得分:-3)
因为有太多人害怕正则表达式,所以他们还没有完全普及到足够明智的人才能想到这个想法并且能够实现它。
即使一个标准组织形成并尝试统一不同的口味,也会有太多人顽固地争论他们自己的方法,无论是否更好,因为很多程序员都喜欢这样。