2
Javascript的正则表达式语法只有一个字边界:\b
。为什么vim的正则表达式语法有两个单词边界?
Vim的正则表达式语法有两个:\<
(字的开始)和\>
(字的结尾)。
任何人都可以给我一个可以实现与vim样式的单词边界,但无法实现JavaScript样式的搜索的例子吗?
或者,具有单个单词边界的正则表达式语法可以做得同样多,但是有开始和结束边界还有其他一些优点吗?
Javascript的正则表达式语法只有一个字边界:\b
。为什么vim的正则表达式语法有两个单词边界?
Vim的正则表达式语法有两个:\<
(字的开始)和\>
(字的结尾)。
任何人都可以给我一个可以实现与vim样式的单词边界,但无法实现JavaScript样式的搜索的例子吗?
或者,具有单个单词边界的正则表达式语法可以做得同样多,但是有开始和结束边界还有其他一些优点吗?
在Vim中使用的语法来自vi,它从ex得到它从ed获得它,这是第一个真正的世界实现正则表达式之一。 (是的,该时间轴上有漏洞。)
许多编程语言(包括JavaScript)中使用的语法直接来自Perl。
vi(以及后面的其他克隆)和Perl(以及后面的PCRE)都为POSIX标准增加了许多功能,但每个实现都不幸遵循其自己的路径......但是Perl/JavaScript/PCRE分支树比ed/sed/ex/vi/Vim之后开始了很多。
所以我会重新塑造你的问题是这样的:
为什么Perl中,JavaScript和PCRE选择有一个单词边界时年纪大了,更成熟,实现了两个?
'\ <'会以'\ b(?= \ w)'的形式写入javascript,不存在无法实现匹配的情况。这只是它定义的方式。 – Mariano