Я предполагаю, что у нас будет запятая после наших желаемых результатов, перечисленных в вопросе, которых тогда может хватить этого простого выражения,
(CP_[A-Z_]+),
Если бы мое предположение было неверным, и после этого у нас были бы другие символы, такие как пробел, мы могли бы добавить класс char в правой части нашей группы захвата, такой как:
(CP_[A-Z_]+)[,\s]
и мы добавим любой символ, который может появиться после желаемых строк в [,\s]
.
Test
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(CP_[A-Z_]+),";
string input = @"LTRIM(RTRIM(ISNULL(CP_RENOUNCEABLE,'x2x'))), ISNULL(CP_RIGHTS_OFFER_TYP,-1), LTRIM(RTRIM(ISNULL(CP_SELLER_FEED_SOURCE,'x2x'))),
LTRIM(RTRIM(ISNULL(CP_SELLER_ID_BB_GLOBAL,'x2x'))),ISNULL(CP_PX,-1), ISNULL(CP_RATIO,-1), ISNULL(CP_RECLASS_TYP,-1);";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Edit:
Для захвата того, что находится между ISNULL
и первой запятой, это может работать:
ISNULL\((.+?),