0
我實現一個詞法分析器用JavaScript正則表達式,令牌類型之一雙引號字符串,如‘ABC’。在複雜的情況是字符串轉義引號字符,如」一個\ 「b」。JavaScript的正則表達式匹配「A 」 B「
我認爲以下兩個正則表達式是等價的: 1)"(\\"|[^"])*"
2)"([^"]|\\")*"
但實際上只有1號作品。你可以在http://regex101.com/#javascript上試試2個正則表達式對「a \」b「,我不知道兩者之間有什麼區別,還有什麼更好的解決方法嗎?
PS:事實證明#1和#2是不同的,看下面的簡單示例:
regex = /(a|ab)*/
regex.exec("aab") -> matches "aa"
JavaScript的正則表達式不會去嘗試,只要能夠匹配,它只是試圖找到一個可行的匹配
雖然下面的一個作品,因爲「AA 「不是匹配。」
regex = /^(a|ab)*$/
regex.exec("aab") -> matches "aab"
要是有一個工具,甚至比正則表達式_more_強大。我想,如果我是去創造這樣一個東西,我把它叫做一個解析器:-) – paxdiablo 2014-11-25 07:33:40
我希望你能實現你的正則表達式基本上是()* – Etai 2014-11-25 07:47:22
@Etai真的嗎?我不這麼認爲,第一個不匹配「」「,我剛剛在regex101上試了一下 – Dagang 2014-11-25 07:50:06