2014-10-31 134 views
0

我有一個代碼編輯器,我想實現的功能,如果我按Ctrl + Shift + Enter,然後我得到(」+ \ r「」)。 (就像在eclipse中一樣)。 要做到這一點,我需要計算光標前雙引號的數量。如果計數不均勻,則光標前的最後一個雙引號打開,然後我需要執行該功能。但在該計數i需要忽略\」,其被封閉在doubleqoutes(定義串時),例如:正則表達式發現「(雙引號)

var alpha:String = "Some \"text\""; 

正確的計數是2

bar beta\":String = "Some \"text\""; 

正確的計數是3

我甚至不能希望弄清楚這個正確的正則表達式,所以請大家幫忙。

回答

0

(?<!\\)\」可能是你想要的東西。 (?<!)表示一個負面的後視,這意味着只計算什麼是過去的東西在parens如果什麼是!不存在。

<和!之間應該沒有空格,好像我試圖在沒有空格的情況下發布它,stackexchange不喜歡它。

+0

我把你的表達放在[link](http://www.regexr.com/)中,它說javascript中不支持lookbehind,我真的想在actionscript中使用它,所以你認爲如果會有什麼問題嗎? – 2014-11-02 18:09:11

+0

我不是familliar與動作,所以我不知道。另一種選擇是做到這一點。 (?:[^ \\] | ^)「(?:表示一個非捕獲組,因此它只會捕獲」如果它位於除\之外的任何字符之前,或者是字符串的開頭,則爲(^)。 [^意味着任何字符不在[] – 2014-11-03 15:24:51

+0

埠我需要忽略\「只有當它在2之間」,在我的例子中我檢查整個行,我檢查'var alpha:String =「Some \」text \ 「」;',而不僅僅是「一些」文本\「」' – 2014-11-04 08:51:25

相關問題