为什么 vim 的正则表达式语法有两个单词边界?

why does vim's regex syntax have two word boundaries?

Javascript 的正则表达式语法只有一个单词边界:\b.

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

谁能给我一个可以用 vim 样式词边界实现但不能用 javascript 样式实现的搜索示例?

或者说只有一个单词边界的正则表达式语法也可以做同样的事情,但是有开始和结束边界还有其他一些优势吗?

Vim 中使用的语法来自 vi,它从 ex 中获取,而 ex 从 ed 中获取,后者是现实世界中第一个正则表达式的实现。 (是的,时间轴上有漏洞。)

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

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

所以我会这样重构你的问题:

Why did Perl, JavaScript, and PCRE chose to have a single word boundary when older, more established, implementations had two?