我有一個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