哪个是正确的缩写 - "regex" 还是 "regexp"?

147

我们大多数计算机程序员都非常关注正确的术语。我也是,特别是因为有时候只改变一个字符就可以大大改变单词的意义。

那么,“正则表达式”的正确缩写是什么呢?是“regex”还是“regexp”?在互联网上,我看到两种用法,尽管“regex”似乎更受欢迎,在SO上的标签列表中也仅包含“regex”。但是很多人在问题中也使用“regexp”。


5
我认为最容易发音的那个胜出——在这方面,“regex”比“regexp”更胜一筹。这种情况在人类语言中经常发生。这只是我的个人看法。 - Hamish Grubijan
12
在此刻之前,我一生中从未听说过将其称为regexp。 - Anthony Pegram
4
从历史上看,你当然是正确的。 "regex" 这个词是 "regular expression" 的缩写。但是我们所称呼的正则表达式 事物 与我们所称呼的 regex 是完全不同的。例如:正则表达式旨在设计得极其简单而优雅。我可以用四行完整的语法和语义来描述正则表达式。实际上,我甚至不需要完整的行,只需要每个点后面的4个要点就足够了。相比之下,在 ECMAScript5 规范中,regexp 字面量的语法占据了整整一页... - Jörg W Mittag
2
这让我想起另一个“重要”的问题:“它是发音为'car'还是'char'?” - Ash
2
这个问题似乎不适合讨论,因为它涉及术语而非编程。 - Toto
显示剩余13条评论
13个回答

660
/regexp?/    


126
这个回答非常赞。 - meder omuraliev
18
+1 - 我知道你在做什么 - Nick Craver
8
@Igor:在正则表达式中,? 正是表示 {0,1} 的意思。确实,有些正则表达式引擎不支持问号,但它们不怎么样;-)不管怎样,Perl 支持,而且它是正则表达式语法的最接近“标准”的东西。 - David Z
10
+1,简直是天才! - Matthew J Morrison
9
这不是所问问题的答案。 - Azat
显示剩余2条评论

73

Googlefight显示,regex胜出,685000比289000(大约是2.37比1)。

此外,regexp在口语中发音很奇怪,因为几乎没有(如果有的话?)以“-ksp”结尾的单词,但是有很多以“-ecks”结尾的单词。


9
在《魔兽世界》中,人们外出获得一些“经验值”,简称“经验”(exp)。因此,说“经验”既不困难,也不奇怪。这只是说话者对这个词语的熟悉程度问题。 - Shi
6
我会将 "exp" 发音为 "ex-pee"——我不玩魔兽世界... - Adrian Lynch
3
我喜欢这个答案,但我更喜欢 regexp 的发音。仅仅说 regex 是不够的,因为它没有考虑到开头的所有辅音。通常缩写应该这样做,例如,“constant” 应该是 “const”,而不是 “con”。 - Adam Hunyadi
@Shi 魔兽玩家几乎总是会读或写“经验值”。 - Positive Navid

31

2
在我的 Mac 上使用正则表达式,结果出现了 Tcl 的 man 页面。嗯...也许这不是一个好的推荐。 - dmckee --- ex-moderator kitten

17

正则表达式更短,因此更好 :) 而且它更容易发音。


13

“正则表达式”通常缩写为“regex”。

根据我的经验,“Regexp”一词只在Javascript语境中使用,因为表示正则表达式的对象实际上被称为RegExp


4
在 Emacs 中查找正则表达式的函数是 isearch-forward-regexp,等等。 - Adam Rosenfield
3
ECMAScript通常被称为RegExp,即使ActionScript也是如此。 - Amarghosh
3
Ruby也可以:http://www.ruby-doc.org/core-1.9.3/Regexp.html - qerub
2
在QED的原备忘录中,Dennis Ritchie和Ken Thompson介绍了正则表达式的全新特性(在文本编辑的上下文中),他们写道:“在随后的讨论中,“<regexp>”将表示一个正则表达式。” - Sz.

7

我认为“正则表达式”更为常见(例如,Java包java.util.regex)。如果有1万个猫王粉丝都这么说,那我会因为人数的优势而支持这个观点。


2
在.NET中,它是System.Text.RegularExpressions.Regex - Anthony Pegram
在 Swift 中也有正则表达式。 - Míng

6
根据维基百科,在计算机领域中,正则表达式(也称为regex或regexp)是...

13
谁会给维基百科的引用点赞?! - Adam Harte
11
谁会投赞成一个修辞问题的? - Andrew Grimm
@Andrew 哈哈,实际上这是一个“问题陈述问题”。 - Adam Harte

6
“正则表达式”是更常见的术语,也是Perl FAQ中使用的术语。在Google上,“正则表达式”有450万个搜索结果,“regexp”有360万个搜索结果。Wikipedia上两个术语都被使用。
您更喜欢哪个术语呢?如果您交替使用它们,我不认为任何人会对您产生不良印象。

6
有趣的是,“perldoc perlre”(描述Perl正则表达式的文档)中到处都使用“regex”,但在“perlop”中引用了“Regexp Quote-Like Operators”。然而,“perldoc perlop”有点混乱,两者都有出现,尽管大多数情况下使用“regex”。当我们运行命令“perl -le 'print ref(qr/x/)'”时,输出结果为“Regexp”。因此,我认为Perl可能有些混淆。 - Peter V. Mørch

6

我认为现在是时候不再使用缩写或简称来考虑问题了。我们在日常任务中所使用的正则表达式与计算机科学或正式语言理论中使用的正则表达式截然不同。这就是为什么Larry Wall和其他Perl社区的重要成员多年来一直更倾向于称其为"regex":将它们称为RegExp或RegEx,甚至RE,都暗示了一种不再适用的关系。


4
我认为应该是"正则表达式",这是基于我的经验、听闻和社区讨论的结论。
我目前找不到相关的讨论,但这个问题在SO的标签元上讨论过,那就是为什么这是"只有一个被打上“regexp”标签的问题",其他(8441个)都被打上了"“regex”"标签。

这只是一个旁边的想法:哪个是“正确”的,有关系吗?考虑到这里的目的,为什么要使用任何词汇?是为了沟通。在某种程度上,正确与否并不重要,重要的是你可以有效地将其传达给更多人。如果你的大多数受众使用不正确的术语,那么很容易会争议使用该术语,因为你的目标是进行沟通。


1
没有标记为“regexp”的问题的原因是因为我们中的一些人不断删除该标记或将其替换为“regex”(就像我在这里刚刚做的那样)。我们不需要两个具有相同含义的标记,“regex”在用户偏好方面更胜一筹(尽管这可能仅仅是因为它更短)。 - Alan Moore
@Alan - 是的,但你不觉得在这种情况下“regexp”也是一个好选择吗?因为问题是关于比较两者的。 - Vilx-
1
@Vlix- 你同样可以争辩说两个标签都不合适,因为问题实际上是关于术语而不是正则表达式。但是回答似乎表明"regex"才是胜利者,所以我们为什么不坚持使用它呢? - Alan Moore
3
更新:在StackOverflow实现“标签同义词”功能之前,此问答已经完成。现在像regexpregular-expression这样的标签会自动转换为regex - Alan Moore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接