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