我有一个PowerShell脚本返回以下项目:
migration test
TECHS-NT$
Administrator
krbtgt
SDI$
现在,我想消除包含$项目和饲料没有一个$成的项目名单。喜欢的东西,
List<string> powershellResults = new List<string>();
foreach (string str in Powershell.Create().AddScript(PS Script))
{
if (Regex.IsMatch(str, @"(\w*[^$])"))
{
powershellResults.Add(str);
}
}
foreach (string str in powershellResults)
{
Console.WriteLine(str);
}
但是,(\ W * [^ $])每个项目匹配过滤掉SDI $和TECHS-NT $物品代替。我的正则表达式应该是什么样子,如果不是(\ w * [^ $])?
如果它们总是以$符号结束,那么您只需检查'str.EndsWith(“$”)'这会快得多。 – 2015-01-09 20:29:15
我可以,但我行使我的RegEx。这就是为什么我问我的RegEx有什么问题,而不是“如何过滤掉这个字符”。 – 2015-01-09 20:36:26
在这种情况下,问题来自于您尚未在您的正则表达式中设置分隔符。这个正则表达式实质上是说:至少为零个字符,然后不是$。但是你不会说什么时候开始或停止寻找。例如,在最后一行中,正则表达式解析器在进行测试时会考虑SDI $,SDI,SD,S。尝试使用'@“^(\ w * [^ $])$”'代替。此外,\ w不会涵盖会导致第一个项目被拒绝的空间。 – 2015-01-09 20:43:18