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