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

时间:2015-11-05 08:16:52

标签: regex vim word-boundary

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

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

有人能给我一个搜索的例子,可以用vim风格的单词边界来实现,但是用javascript风格无法实现吗?

或者说具有单个字边界的正则表达式语法可以做到这一点,但是具有开始和结束边界还有其他一些优势吗?

1 个答案:

答案 0 :(得分:5)

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

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

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

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

  

为什么Perl,JavaScript和PCRE在旧的,更成熟的实现有两个时选择了单个字边界?