【发布时间】:2015-03-30 15:25:01
【问题描述】:
我看这里ANSI C grammar。
此页面包含大量 Lex/Flex for ANSI C 中的正则表达式。
在理解字符串文字的正则表达式时遇到问题。
他们提到正则表达式为\"(\\.|[^\\"])*\"
据我所知,\" 用于双引号,\\ 用于转义字符,. 用于除escape character 之外的任何字符,* 用于零次或多次。
[^\\"] 表示除\、" 之外的字符。
所以,在我看来,正则表达式应该是\"(\\.)*\"。
你能给出一些上面的正则表达式会失败的字符串吗?
或
他们为什么使用[^\\"]?
【问题讨论】:
-
如果您有
"作为分隔符,那么\\.将匹配文字点。不是反斜杠和点。
标签: c++ c regex flex-lexer lex