flex中的问号(?)

时间:2013-02-25 16:49:42

标签: compiler-construction flex-lexer lexical-analysis

我无法理解这个问题在flex中的正则表达式中意味着什么。例如,在我的笔记中说:

  

[a-z]?对应0或1次重​​复(用于可选部分)。

另一个例子说:

  

- ?[1-9] [0-9] * 对应任何非零整数。

我不明白为什么这些正则表达式对应于他们的解释。有人可以解释这两个吗?

1 个答案:

答案 0 :(得分:2)

?并非特定于flex,它是大多数正则表达式引擎的一部分。它基本上意味着在? 可选之前的任何内容,所以它实际上不必存在。

具体来说,它意味着“零或前一个元素之一”。

示例:

Nov(ember)?              // matches November or Nov
Feb(ruary)? 23(rd)?      // matches Feb 23 or February 23 or February 23rd or Feb 23rd
colou?r                  // matches color or colour