1

我有一個關於flex的問題。在我的筆記,在示例代碼片段,它說以下內容:^在flex中的含義

[^ \t\n]+ printf("saw a word\n"); 

我不明白,代碼的含義,以及它是如何對應於一個字。它看起來像\t意味着當我們看到一個空白,而\n意味着當我們看到換行符時,但在開始時^的含義是什麼,以及[^ \t\n]+究竟意味着什麼?如果有人能解釋,我將不勝感激。

回答

3

[]是一個字符組,並匹配其中指定的所有字符。在這種情況下,^顛倒了整個事物,並且字符組匹配所有指定的字符但是。所以在這種情況下,它匹配除空格,製表符或換行符之外的所有內容。

+0

但在這種情況下,讓我們假設這是唯一的規則和輸入是「你好」。它打印出5次「看到一個字」嗎?因爲當它看到h時,它會打印,因爲它不是換行符,製表符或空白,然後是e,...等等。在這種情況下,當我們看到一個單詞時,我們實際上並不打印,對嗎? – yrazlik 2013-02-24 21:37:13

+0

@bigO不,它會打印一次,因爲貪婪。它匹配儘可能最長的字符串。 – EJP 2013-02-24 21:41:51

+0

我現在看,謝謝 – yrazlik 2013-02-24 21:42:46