我想知道为什么必须有这么多正则表达式方言。为什么似乎有这么多语言,而不是重复使用一种久经考验的真实方言,似乎一心要编写自己的语言。
Like these.
我的意思是,我知道其中一些确实有非常不同的后端。但这不应该从程序员那里抽象出来吗?
我更多地指的是奇怪但微小的差异,例如括号必须在一种语言中转义,而在另一种语言中是文字。或者元字符的含义有些不同。
有什么特别的原因我们不能有某种通用的正则表达式方言吗?我认为对于必须使用多种语言工作的程序员来说,这会让事情变得更容易。
最佳答案
因为正则表达式只有三个操作:
|
*
其他一切都是扩展或语法糖,因此没有标准化的来源。捕获组、反向引用、字符类、基数操作等都是对正则表达式原始定义的补充。
其中一些扩展使“正则表达式”根本不再是正则的。由于这些附加功能,它们能够决定非正则语言,但无论如何我们仍然称它们为正则表达式。
随着人们添加更多扩展,他们通常会尝试使用正则表达式的其他常见变体。这就是为什么几乎所有方言都使用
X+
表示“一个或多个X”,这本身只是写作的捷径XX*
.但是当添加新功能时,就没有标准化的基础,所以必须有人做出一些事情。如果大约同时有不止一组设计师提出类似的想法,他们就会有不同的方言。
关于regex - 为什么有这么多不同的正则表达式方言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2298007/