我想知道在LEX中,如果我想解析一些代码,直到一个特殊的符号。
例如:$display("Hello World");
在这里,我想获得$display("Hello World")
但;
除外。
我已经尝试过这个:\$"display".*[^;]
,它似乎无法正常工作。
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
.
匹配任何角色,而Kleene星*
将匹配其前面的许多内容。在这种情况下,您将匹配display
,后跟任何其他字符的列表。这恰好包括你要捕获的位以及分号。
明显的解决方法是删除表达式的那一部分,并将Kleene星移到[^;]
表达式之后。这将说“匹配任何不是;
的字符的多个实例”。这可能需要围绕子表达式的parens(我不记得pricex语法,因为它在词法分析器之间变化)。
\$"display"([^;])*
或\$"display"[^;]*