为什么正则表达式不是ISO C99的一部分

时间:2010-07-15 20:28:47

标签: c regex standards c99

每个人都知道C语言有多棒,文本处理任务有多糟糕。鉴于这些事实。正则表达式肯定必须成为ISO C的一部分。但事实并非如此。我不明白为什么?是否有人认为它不重要?

5 个答案:

答案 0 :(得分:14)

正则表达式不仅仅适用于C语言,而是声音库,图形库或加密库。这样做会降低语言的通用性,并极大地抑制其作为一种小而有效的嵌入式语言的使用。

C的哲学是拥有一个非常小而有效的语言关键字集,其中包含用于下一层功能的标准化库。由于正则表达式,图形,声音,加密等不具备单一平台或标准,因此它们不适合标准C库。

它们最适合作为目前的用户库。

答案 1 :(得分:7)

Regex被定义为IEEE Std 1003.1:2001(POSIX)

的一部分

这是一个标准列表,其中标题是哪个标题:

http://www.schweikhardt.net/identifiers.html

答案 2 :(得分:4)

因为它是一个库功能,需要对其中一种正则表达式语言进行标准化。标准机构是委托人,不是一件容易的事。

本文件解释了标准的合理化:http://www.open-std.org/jtc1/sc22/wg14/www/docs/C99RationaleV5.10.pdf,这可能会澄清原因 文档中解释的另一个原因。是保持语言简单。

有很多可用的下载,只需使用一个。

答案 3 :(得分:3)

因为正则表达式对编程语言不是必不可少的。便利?是的,当你需要它们时非常如此。必要?没办法。

Web开发人员自然会认为正则表达式是语言的基本功能,因为他们必须验证所有HTML表单数据。开发人员的经验总是使用少数几个大型关系数据库服务器之一,因此认为SQL支持至关重要。那些在科学领域工作的人需要支持“大数字”或张量。 GUI开发人员认为内置的GUI工具包是必不可少的。有些人整天都在处理XML,并认为XML支持是必不可少的....等等。你明白了。这个“必需品”列表可以变得非常大,像Java这样的语言肯定采用了“厨房接收器”方法来处理其庞大的标准库。我很欣赏C在这个意义上不是一种厨房水槽语言。

小心不要认为您最喜欢的语言功能是其他人必备的功能。

答案 4 :(得分:1)

C的要点是小而强大。由于正则表达式通常是一个庞大而复杂的主题,因此它属于一个库。虽然C委员会没有“赞助”一些写得很好的标准C算法/数据结构库,但实在太糟糕了。那里有很多人。我倾向于坚持使用GNU“赞助”库,因为它们可用于大多数平台,即使它们不一定是最简单或最有效的。他们确实达到了很好的平衡。