Javascript 的正则表达式语法只有一个词边界:\b
.
Vim 的正则表达式语法有两个:\<
(单词开头)和 \>
(词尾)。
谁能给我一个搜索的例子,可以用 vim 风格的词边界来实现,但不能用 javascript 风格来实现?
或者,具有单个单词边界的正则表达式语法是否可以做同样多的事情,但具有开始和结束边界还有其他一些优势?
最佳答案
Vim 中使用的语法来自 vi,从 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?
关于regex - 为什么 vim 的正则表达式语法有两个单词边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33539548/