遵循最长匹配规则
C风格注释:
1 cmark \/\*([^\*]|(\*)*[^\*/])*\*\/
2 cmark \/\*([^\*]|(\*)+[^\/])*\*\/
3 cmark \/\*([^\*]|(\*)+[^/])*\*\/
1 不包含*或则有0到多个*并且后面没有*和/。(这样中间就不会匹配掉注释结尾的*/)
2 不包含*或则有1到多个*并且后面没有/。(这样当遇到结尾*/时,因为前面是一个*,然后跟着一个/ -- 不满足匹配)
匹配空行:
null_line ^[ \t]*[ \n]
匹配单词:
words [^ \t\n]+
chars [A-Za-z\_\'\.\"]
numbers ([0-9])+
delim [" "\n\t]
whitespace {delim}+
words {chars}+
待续......