У меня есть сценарий 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);
}
Но, (\ ш * [^ $]) соответствует каждому пункту, а не отфильтровывая SDI $ и TECHS-NT $ элементов. Как должно выглядеть мое регулярное выражение, если не (\ w * [^ $])?
Если они всегда будут заканчиваться знаком $, вы просто просто проверяете 'str.EndsWith (" $ ")', который будет намного быстрее. –
Я мог бы, но я занимаюсь своим RegEx. Вот почему я спрашиваю, что не так с моим RegEx, а не «Как отфильтровать этот символ». –
В этом случае проблема возникает из-за того, что вы не задавали разделители вокруг своего регулярного выражения. Это регулярное выражение по существу говорит: по крайней мере, нулевые слова-символы, а затем не $. Но вы не говорите, когда начинать или прекращать искать. Например, в последней строке парсер regex рассматривает SDI $, SDI, SD, S при выполнении тестов. Попробуйте вместо этого использовать '@"^(\ w * [^ $]) $ ". Кроме того, \ w не охватывает пробелы, из-за которых первый элемент будет отклонен. –