我正在學習o'reilly書中的lex和yacc,並且遇到了一個處理命令,數字,字符串和新行的lex示例,忽略了空格和註釋。這個正則表達式在lex中意味着什麼
我無法理解在本例中一個特定的正則表達式:
\ 「[^ \」 \ n] * \」
這種表達在雙引號處理文本例如: 「測試正則表達式」將成功匹配,而測試正則表達式不會匹配。
我讀了正則表達式的Wikipedia文章,但我仍然不明白這一點。
我正在學習o'reilly書中的lex和yacc,並且遇到了一個處理命令,數字,字符串和新行的lex示例,忽略了空格和註釋。這個正則表達式在lex中意味着什麼
我無法理解在本例中一個特定的正則表達式:
\ 「[^ \」 \ n] * \」
這種表達在雙引號處理文本例如: 「測試正則表達式」將成功匹配,而測試正則表達式不會匹配。
我讀了正則表達式的Wikipedia文章,但我仍然不明白這一點。
double quote
(\"
),anything but double quote or linefeed
([^\"\n]
)0次或更多次(*
)double quote
(\"
)。
反斜槓的必要性是什麼?我的意思是爲什麼正則表達式是以「 –
」開頭的,它逃脫了雙引號,剝奪了它的任何特殊含義(如含義雙引號) –
但是雙引號有特殊含義嗎? –
\"
匹配起始引號(「)。引號逃脫\不會打破正則表達式字符串。
[^\"\n]*
匹配任何東西,除了報價或行尾。^是指不是,\ n是線的一個端部中,*表示匹配0次或更多次
\"
匹配最後一個引號
[可視化(http://strfriend.com/vis?re=%5C%22%5B%5E%圖5C%22%5CN %5D *%5C%22)在_strfriend.com_上。 – Wiseguy