2011-12-01 84 views
0

我正在學習o'reilly書中的lex和yacc,並且遇到了一個處理命令,數字,字符串和新行的lex示例,忽略了空格和註釋。這個正則表達式在lex中意味着什麼

我無法理解在本例中一個特定的正則表達式:

\ 「[^ \」 \ n] * \」

這種表達在雙引號處理文本例如: 「測試正則表達式」將成功匹配,而測試正則表達式不會匹配。

我讀了正則表達式的Wikipedia文章,但我仍然不明白這一點。

+0

[可視化(http://strfriend.com/vis?re=%5C%22%5B%5E%圖5C%22%5CN %5D *%5C%22)在_strfriend.com_上。 – Wiseguy

回答

2

double quote\"),anything but double quote or linefeed[^\"\n])0次或更多次(*double quote\")。

+0

反斜槓的必要性是什麼?我的意思是爲什麼正則表達式是以「 –

+0

」開頭的,它逃脫了雙引號,剝奪了它的任何特殊含義(如含義雙引號) –

+0

但是雙引號有特殊含義嗎? –

0
\" 

匹配起始引號(「)。引號逃脫\不會打破正則表達式字符串。

[^\"\n]* 

匹配任何東西,除了報價或行尾。^是指不是,\ n是線的一個端部中,*表示匹配0次或更多次

\" 

匹配最後一個引號

相關問題