Javascript的正则表达式语法只有一个单词边界:\b
。
Vim的正则表达式语法有两个:\<
(单词的开头)和\>
(单词的结尾)。
有人能给我一个搜索的例子,可以用vim风格的单词边界来实现,但是用javascript风格无法实现吗?
或者说具有单个字边界的正则表达式语法可以做到这一点,但是具有开始和结束边界还有其他一些优势吗?
答案 0 :(得分:5)
Vim中使用的语法来自vi,它从ex获取它,从ed获取它,这是正则表达式的第一个真实世界实现之一。 (是的,那个时间表上有漏洞。)
许多编程语言中使用的语法 - 包括JavaScript - 直接来自Perl。
vi(以及之后的其他克隆)和Perl(以及后来的PCRE)都为POSIX标准添加了许多功能,但不幸的是每个实现都遵循自己的路径。树的Perl / JavaScript / PCRE分支比ed / sed / ex / vi / Vim分支开始的时间要晚很多。
所以我会像这样重新构建你的问题:
为什么Perl,JavaScript和PCRE在旧的,更成熟的实现有两个时选择了单个字边界?