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