我想用正则表达式在字符串中找到两个或多个变量。例如,我有一个像这样的字符串“Result = Num + 2 ( 6 * Count )”。我想知道“Result”、“Num”和“Count”是否在这个字符串中。假设我想构建一个小型编译器,这些字符串是我的保留字,我想使用正则表达式进行检查。
区分大小写对我来说更重要。例如,如果客户端在字符串中输入“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
将是匹配单词的数组
但是,如果您在另一个答案中声明您正在构建一个小型编译器,那么您最好构建一个标记化引擎。例如构建一个更好的标记器
这可能是 Regex 教程中的第一件事。
string expression = "Result = Num + 2 ( 6 * Count )";
foreach (Match match in Regex.Matches(expression, "[a-zA-Z]+")) {
Console.WriteLine(match.Value);
}