Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道在 LEX 中,如果我想解析一些代码直到一个特殊符号。
例如:$display("Hello World");
$display("Hello World");
在这里,我想得到$display("Hello World")但除了;.
$display("Hello World")
;
我已经尝试过这个:\$"display".*[^;],它似乎没有用。
\$"display".*[^;]
任何帮助将不胜感激。谢谢。
.匹配任何字符,而 Kleene 星*将匹配它之前的许多字符。在这种情况下,您将匹配display后面的任何其他字符的列表。这恰好包括您要捕获的位以及分号。
.
*
display
明显的解决方法是删除表达式的那一部分,并将 Kleene 星移动到[^;]表达式之后。这将说“匹配任何不是字符的多个实例;”。这可能需要围绕子表达式的括号(我不记得价格语法,因为它在词法分析器之间有所不同)。
[^;]
要么\$"display"([^;])*或\$"display"[^;]*
\$"display"([^;])*
\$"display"[^;]*