【发布时间】:2014-02-26 14:48:36
【问题描述】:
我为编译器编写了一个迷你扫描器,它从文件中读取,我想写而不是变量,id 和 for 关键字什么都不做(一组想要从我的变量形式表达式中排除的单词),如下行获取我的变量,我如何从这个表达式中排除例如 int 或 bool 或 ...:
((?:[A-Za-z][A-Za-z0-9_]*))
【问题讨论】:
标签: c# regex compiler-construction lexical-analysis
我为编译器编写了一个迷你扫描器,它从文件中读取,我想写而不是变量,id 和 for 关键字什么都不做(一组想要从我的变量形式表达式中排除的单词),如下行获取我的变量,我如何从这个表达式中排除例如 int 或 bool 或 ...:
((?:[A-Za-z][A-Za-z0-9_]*))
【问题讨论】:
标签: c# regex compiler-construction lexical-analysis
我认为你想要的是一个零宽度的负前瞻。 C# 正则表达式中的语法是将您不想匹配的表达式分组为零宽度负前瞻。另外你可能需要用词边界\b:
string pattern = @"(\b(?!int|bool)(?:[A-Za-z][A-Za-z0-9_]*)\b)";
【讨论】: