2015-11-05 36 views
2

Javascript的正则表达式语法只有一个字边界:\b为什么vim的正则表达式语法有两个单词边界?

Vim的正则表达式语法有两个:\<(字的开始)和\>(字的结尾)。

任何人都可以给我一个可以实现与vim样式的单词边界,但无法实现JavaScript样式的搜索的例子吗?

或者,具有单个单词边界的正则表达式语法可以做得同样多,但是有开始和结束边界还有其他一些优点吗?

+0

'\ <'会以'\ b(?= \ w)'的形式写入javascript,不存在无法实现匹配的情况。这只是它定义的方式。 – Mariano

回答

4

在Vim中使用的语法来自vi,它从ex得到它从ed获得它,这是第一个真正的世界实现正则表达式之一。 (是的,该时间轴上有漏洞。)

许多编程语言(包括JavaScript)中使用的语法直接来自Perl。

vi(以及后面的其他克隆)和Perl(以及后面的PCRE)都为POSIX标准增加了许多功能,但每个实现都不幸遵循其自己的路径......但是Perl/JavaScript/PCRE分支树比ed/sed/ex/vi/Vim之后开始了很多。

所以我会重新塑造你的问题是这样的:

为什么Perl中,JavaScript和PCRE选择有一个单词边界时年纪大了,更成熟,实现了两个?

相关问题