1
我有一個關於flex的問題。在我的筆記,在示例代碼片段,它說以下內容:^在flex中的含義
[^ \t\n]+ printf("saw a word\n");
我不明白,代碼的含義,以及它是如何對應於一個字。它看起來像\t
意味着當我們看到一個空白,而\n
意味着當我們看到換行符時,但在開始時^
的含義是什麼,以及[^ \t\n]+
究竟意味着什麼?如果有人能解釋,我將不勝感激。
我有一個關於flex的問題。在我的筆記,在示例代碼片段,它說以下內容:^在flex中的含義
[^ \t\n]+ printf("saw a word\n");
我不明白,代碼的含義,以及它是如何對應於一個字。它看起來像\t
意味着當我們看到一個空白,而\n
意味着當我們看到換行符時,但在開始時^
的含義是什麼,以及[^ \t\n]+
究竟意味着什麼?如果有人能解釋,我將不勝感激。
[]
是一個字符組,並匹配其中指定的所有字符。在這種情況下,^
顛倒了整個事物,並且字符組匹配所有指定的字符但是。所以在這種情況下,它匹配除空格,製表符或換行符之外的所有內容。
但在這種情況下,讓我們假設這是唯一的規則和輸入是「你好」。它打印出5次「看到一個字」嗎?因爲當它看到h時,它會打印,因爲它不是換行符,製表符或空白,然後是e,...等等。在這種情況下,當我們看到一個單詞時,我們實際上並不打印,對嗎? – yrazlik 2013-02-24 21:37:13
@bigO不,它會打印一次,因爲貪婪。它匹配儘可能最長的字符串。 – EJP 2013-02-24 21:41:51
我現在看,謝謝 – yrazlik 2013-02-24 21:42:46