2016-01-23 73 views
1

我有一個字符串,其中有幾個「\\」,其中一些我想選擇使用正則表達式去除,其他不是。更確切的說,我想刪除所有「\\」裏面沒有[...]所以對於字符串使用正則表達式選擇

var string1 = "[1 & 2 \\ 1 & 2] \\ [1 & 2 \\ 1 & 2 ]"; 
var string2 = "a{b}_{c} \\ [1 & 2 \\ 1 & 2 \\ 1 & 2 ]"; 
var string3 = "[1 & 2 \\ 1 & 2 \\ 1 & 2 ] \\ \text{foo}"; 

有沒有選擇「\\」,在」一個正則表達式..] \\ [..「in string1,」..} \\ [..「in string2 and」..] \\ \ te ..「?通常在「\\」之前和之後可以有任何符號,主要區別在於我只想選擇那些不在括號內的符號。

+0

是[和]拼圖?如果是這樣,那麼你正在離開正則表達式的可能性(不再是一個普通的語法),你需要一些更高級的解析器。 –

+0

沒有[和]不會顯示爲[[]]或[[]或[]] –

+0

沒有您當前的代碼,我認爲這是不可能的,因爲「選擇」不明確。正則表達式只搜索匹配。而正則表達式的風格因發動機而異。 –

回答

1

這就需要在使用lookbehinds量詞(*+)排除像\[[^]]*圖案(這意味着它已經左方括號隨後除右方括號任何數量的字符前),但在lookbehinds量詞是不可能的。

因此,也許你會發現在你的字符串不同的模式 - 例如,如果這些對/從不後面加一個空格和數字,而那些在括號內始終是,你可以這樣做:

\\{2}(?!\s\d) 

Demo here

+0

這並沒有回答原來的問題,但似乎我可以事先修改字符串以匹配您的正則表達式。謝謝! –