在我的词法分析器中,我编写了以下正则表达式:
"///"\s*[^@\s].*
我在调试模式下执行了byacc/j,它指出以下行与正则表达式匹配。
但是为什么这个正则表达式匹配这一行呢?
/// @Service( version="1.0.0" )
我也试过"///"\s*[^\@\s].*
,万一@
是特殊字符,但它也匹配。oO
我认为我的正则表达式只会匹配一个///
以可选空格开头的字符串。除了必须出现的任何非空白字符之外@
,后跟任何字符。
编辑:对不起,我的意思是在 jflex 中使用正则表达式,而不是byacc/j。
解决方法:在jflex 文档中我没有找到任何\s
转义序列,所以我尝试了这个正则表达式"///"[ \t\f]*[^@ \t\f].*
并且它有效。jflex似乎\s
不支持转义字符并默默地忽略它。