2015-11-05 32 views
2

Javascript的正則表達式語法只有一個字邊界:\b爲什麼vim的正則表達式語法有兩個單詞邊界?

Vim的正則表達式語法有兩個:\<(字的開始)和\>(字的結尾)。

任何人都可以給我一個可以實現與vim樣式的單詞邊界,但無法實現JavaScript樣式的搜索的例子嗎?

或者,具有單個單詞邊界的正則表達式語法可以做得同樣多,但是有開始和結束邊界還有其他一些優點嗎?

+0

'\ <'會以'\ b(?= \ w)'的形式寫入javascript,不存在無法實現匹配的情況。這只是它定義的方式。 – Mariano

回答

4

在Vim中使用的語法來自vi,它從ex得到它從ed獲得它,這是第一個真正的世界實現正則表達式之一。 (是的,該時間軸上有漏洞。)

許多編程語言(包括JavaScript)中使用的語法直接來自Perl。

vi(以及後面的其他克隆)和Perl(以及後面的PCRE)都爲POSIX標準增加了許多功能,但每個實現都不幸遵循其自己的路徑......但是Perl/JavaScript/PCRE分支樹比ed/sed/ex/vi/Vim之後開始了很多。

所以我會重新塑造你的問題是這樣的:

爲什麼Perl中,JavaScript和PCRE選擇有一個單詞邊界時年紀大了,更成熟,實現了兩個?

相關問題