我正在尝试匹配***
,但我发现 javacc 匹配***
行中的任何位置。我如何确保它仅***
在之前除空格或制表符之外没有其他字符时才匹配***
?这是我目前拥有的
< HORIZONTAL_RULE: <ZERO_OR_MORE_OF_TAB_OR_SPACE> ("**")("*")+>
| <#ZERO_OR_MORE_OF_TAB_OR_SPACE: (" " | "\t")*>
但同样,这匹配***
前面有零个或多个空格的任何内容。
我正在尝试匹配***
,但我发现 javacc 匹配***
行中的任何位置。我如何确保它仅***
在之前除空格或制表符之外没有其他字符时才匹配***
?这是我目前拥有的
< HORIZONTAL_RULE: <ZERO_OR_MORE_OF_TAB_OR_SPACE> ("**")("*")+>
| <#ZERO_OR_MORE_OF_TAB_OR_SPACE: (" " | "\t")*>
但同样,这匹配***
前面有零个或多个空格的任何内容。
使用词汇状态。使用 DEFAULT 状态作为行的开头。
// Note that states do not apply to private regular expression definitions.
TOKEN: <#ZERO_OR_MORE_OF_TAB_OR_SPACE: (" " | "\t")*>
<DEFAULT> TOKEN: {
<HORIZONTAL_RULE: <ZERO_OR_MORE_OF_TAB_OR_SPACE> ("**")("*")+ > : MIDLINE
}
<DEFAULT, MIDLINE> SKIP { <OTHERCHAR: ~["\n","\r"]> : MIDLINE }
<DEFAULT, MIDLINE> SKIP { <NEWLINE: "\n" | "\n\r" | "\r" | "\r\n"> : DEFAULT }