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

cla*_*aws 6 c regex standards c99

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

Ama*_*9MF 14

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

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

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

  • 我不确定这个答案真的过得真快.毕竟,C标准提供了"独立"实现的选项,许多更复杂的功能是可选的.从本质上讲,regexp库实际上并不比"printf()"更具有平台或域特性 - 我倾向于将其称为历史事故而不是其他任何事情. (3认同)
  • 很好的答案.如果更进一步,可能会问为什么文件I/O在标准库中 - 毕竟,它也只是许多可能的文件I/O子系统中的一个,对吧?我的猜测是,这是由于C的传统是UNIX的主要系统编程语言,其中文件系统对除了内存管理(例如数据持久性,设备驱动程序,IPC等)之外的任何事物起着非常重要的作用. . (2认同)

tov*_*are 7

正则表达式被定义为IEEE Std 1003.1:2001(POSIX)的一部分

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

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


Rom*_*eau 5

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

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

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