我最熟悉PowerShell,最近又开始使用C#作为我的主要语言。在PowerShell中,可以执行以下操作
$var1 = "abc"
"abc" -match "$var1"
这会产生真实的陈述。
我希望能够在C#中做同样的事情。我知道你可以在C#中使用插值,我尝试了各种方法尝试使用Regex.Match()而没有运气。
示例:
string toMatch = "abc";
var result = Regex.Match("abc", $"{{toMatch}}");
var a = Regex.Match("abc", $"{{{toMatch}}}");
var b = Regex.Match("abc", $"{toMatch}");
var c = Regex.Match(toMatch,toMatch);
上述所有内容似乎都无效。我甚至不确定我在C#中可能做的事情是否可行。理想情况下,我希望能够使用变量和Regex的组合进行匹配。甚至像Regex.Match(varToMatch,$"{{myVar}}\\d+\\w{4}")
编辑: 在这里阅读了一些答案并尝试了一些代码后,我的真正问题似乎是试图与目录路径相匹配。像" C:\ temp \ abcfile"。例如:
string path = @"C:\temp\abc";
string path2 = @"C:\temp\abc";
string fn = path.Split('\\').LastOrDefault();
path = Regex.Escape(path);
path2 = Regex.Escape(path2);
Regex rx = new Regex(path);
var a = Regex.Match(path.Split('\\').Last().ToString(), $"{fn}");
//Example A works if I split and match on just the file name.
var b = Regex.Match(path, $"{rx}");
//Example B does not work, even though it's a regex object.
var c = Regex.Match(path, $"{{path}}");
//Example C I've tried one, two, and three sets of parenthesis with no luck
var d = Regex.Match(path,path);
// Even a direct variable to variable match returns 0 results.
答案 0 :(得分:1)
你似乎在最后一个例子中说得对,所以也许问题是你期待一个bool结果而不是Match
结果?
希望这个小例子有所帮助:
int a = 123;
string b = "abc";
string toMatch = "123 and abc";
var result = Regex.Match(toMatch, $"{a}.*{b}");
if (result.Success)
{
Console.WriteLine("Found a match!");
}