正则表达式中的自定义字符串变量
本文关键字:字符串 变量 自定义 正则表达式 | 更新日期: 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);
}