2009-07-29 82 views
0

我開始在JavaScript中編寫代碼語法高亮顯示,並且我想突出顯示以某種顏色引用的文本(包括「s」和「s」),我需要它能夠不要被其他引號中的一種引用搞砸,但我真的不知道該從哪裏開始。我不確定我應該如何去查找引號然後找到正確的最終報價。查找開始和結束語引用

+0

這樣的正則表達式會幫助嗎?http://stackoverflow.com/questions/249791/regexp-for-quoted-string-with-escaping -quotes – 2009-07-29 07:56:44

回答

1

除非你這樣做是對的挑戰,看看Google Code Prettify

對於你的問題,你可以在parsing (and lexers) at Wikipedia讀了,這是一個很大的話題和你」你會發現你會遇到更大的問題比解析字符串。

要開始,你可以使用正則表達式匹配的字符串典型的正則表達式(儘管他們很少有真正的詞法分析器的準確性。):

/"(?:[^"\\]+|\\.)*"/ 

然後爲'相同而不是"

否則,對於逐個字符的解析器,一旦您點擊了",就會設置某種狀態,然後當您點擊的"之前沒有反斜槓數量不均時甚至相當數量的反斜槓會逃脫彼此),你退出字符串。

0

使用堆棧..如果無法比擬的報價發現,將其推..如果發現匹配彈出

1

您可以使用正則表達式,但如果你正在寫一個語法高亮那麼唯一可靠的方法是報價單步執行代碼,逐字符,並決定從那裏做什麼。

E.g.的正則表達式

/("|')((?:\\\1|.)+?)\1/g 

(匹配「this」和「本」和「THI \」 S「)

0

我在PHP中使用向後引用一個正則表達式做到了。JS不支持我想這就是你需要的,如果你真的想檢測不確定的反斜槓。