正则表达式中的自定义字符串变量

本文关键字:字符串 变量 自定义 正则表达式 | 更新日期: 2023-09-27 17:55:51

我想在带有正则表达式的字符串中找到两个或多个变量。例如,我有一个这样的字符串"结果 = Num + 2 ( 6 * 计数 )"。我想找出"结果","数字"和"计数"是否在此字符串中。假设我想构建一个小编译器,这些字符串是我的保留字,我想使用正则表达式进行此检查。

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

如何在 C# 中执行此操作?

正则表达式中的自定义字符串变量

更新为使用任意词集合

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将是匹配单词的数组

但是,如果您正在构建

一个小编译器,那么正如您在另一个答案中所说的那样,您最好构建一个标记化引擎。 例如,构建更好的令牌器

这可能是正则表达式教程中的第一件事。

string expression = "Result = Num + 2 ( 6 * Count )";
foreach (Match match in Regex.Matches(expression, "[a-zA-Z]+")) {
    Console.WriteLine(match.Value);
}