我正在使用原生C ++编写一种编程语言,我正在用C#编写基本编辑器。 NET WinForms。但是,我正在使用SyntaxRTB
,我希望Regex能够捕获以下错误:
如果声明未被string / int / float / bool / array / char
取代
我该怎么做?
(声明变量的语法是declare variable_type variable_name
) - 也必须考虑空格。
我有declare(?!string)
,但我仍感到困惑。
答案 0 :(得分:3)
如果你想要一个正则表达式,你需要一个零宽度negative lookahead
但是如果你正在构建一种语言,那就不是这样了。完整的语言解析器是一个不同的实体。
答案 1 :(得分:1)
虽然我同意@fejesjoco,但这是我用here的表达式:
(declare)[\s](int|string|float|bool|array|char)[\s](.*)
检查!match(pattern)
以进一步诊断问题。
答案 2 :(得分:0)