2011-08-17 73 views

回答

2

我不認爲有任何東西,這樣做,但你可以使用,這可能是不夠好一個魔術性修改。比方說,你有以下表現:

let pattern = '\<'.word.'\>' 

如果word爲用戶提供的字符串,然後(如果我理解正確的話)你想忽略所有特殊改性劑在裏面。要做到這一點,請使用「非常規模式」。通過在模式前面加上一個「\ V」,你可以使模式表現得像一個文字串。之後,將「\ m」恢復正常行爲。在這種情況下:

let pattern = '\<\V'.word.'\m\>' 

但是請注意,這不正是你問什麼。如果用戶輸入foo(*bar),它會工作得很好,但如果它的foo(\*bar),不會,因爲\*對被解釋爲一個明星改性劑。如果您不瞭解這些模式,請嘗試:help /\V以更好地瞭解魔法的工作原理。

+0

MH,是的,提醒'\ Q'和PCRE'\ E'的我。 這當然不是完美的,因爲它是...(在我的理解不執行任何對用戶插入'\ M'到搜索字符串),但隨後也許,這可以進一步得到緩解'讓S:模式=替代(s:模式,'\\ m','\\\\ m')',批准。 – ZJR

+1

實際上:'令s:=圖案替代(S:圖案,\\', '\\\\', 'G')' – ZJR