-2

我想用正则表达式在字符串中找到两个或多个变量。例如,我有一个像这样的字符串“Result = Num + 2 ( 6 * Count )”。我想知道“Result”、“Num”和“Count”是否在这个字符串中。假设我想构建一个小型编译器,这些字符串是我的保留字,我想使用正则表达式进行检查。

区分大小写对我来说更重要。例如,如果客户端在字符串中输入“num”或“count”,则该方法必须返回 false。

我怎样才能在 C# 中做到这一点?

4

2 回答 2

1

更新以使用任意词集合

var words = new [] { 
                     "Result",
                     "Num",
                     "Count"
                   };

var source = "Result = Num + 2 ( 6 * Count)";
var regex=new Regex(string.format(@"\b(?<words>(?-i){0})\b", string.Join("|",words));
var results = (
            from m in regex.Matches(source).OfType<Match>()
            select m.Groups["words"].Value
            ).ToArray();

results将是匹配单词的数组

但是,如果您在另一个答案中声明您正在构建一个小型编译器,那么您最好构建一个标记化引擎。例如构建一个更好的标记器

于 2013-01-25T12:31:27.177 回答
0

这可能是 Regex 教程中的第一件事。

string expression = "Result = Num + 2 ( 6 * Count )";

foreach (Match match in Regex.Matches(expression, "[a-zA-Z]+")) {
    Console.WriteLine(match.Value);
}
于 2013-01-25T12:00:52.217 回答