Я с трудом regexing этих данных для извлечения имен

голоса
-1

CN = Cal ситы / O = SEL, CN = Scot Shaf / O = SEL

Строка выглядит следующим образом, и может быть больше, чем 2 группы, разделенной запятой.

Это так близко, как я получаю, но не так:

((?: [A-Za-Z =] + [^ A-Za-Z '-] +) {} 0,12) / O = SEL

Пожалуйста, помогите некоторые регулярные выражения гуру!

Задан 02/09/2018 в 05:19
источник пользователем
На других языках...                            


2 ответов

голоса
1

Для того, чтобы получить имена из следующей строки: CN = Cal Sith / O = SEL, CN = Scot Shaf / O = SEL

Попробуйте с ниже Snippet:

        string sPattern = @"(?:[a-z=]+)=(?<Name>[a-z\s]+)\/O=SEL";
        Regex oRegex = new Regex(sPattern,RegexOptions.IgnoreCase);
        string sInput = "CN=Cal Sith/O=SEL,CN=Scot Shaf/O=SEL";
        List<string> FullNames = new List<string>();
        foreach (Match oData in oRegex.Matches(sInput))
        {
            FullNames.Add(Convert.ToString(oData.Groups["Name"]));
        }
Ответил 02/09/2018 в 06:08
источник пользователем

голоса
0

Вы можете использовать позитивные назад ?<=\bCN=) ', чтобы утверждать , что предшествующий являетесь CN=и использовать негативный класс символов [^/]+ , чтобы соответствовать а не косой черте один или несколько раз:

(?<=\bCN=)[^/]+

Regex демо

string pattern = @"(?<=\bCN=)[^/]+";
string input = @"CN=Cal Sith/O=SEL,CN=Scot Shaf/O=SEL";
List<String> FullNames = Regex.Matches(input, pattern)
    .Cast<Match>()
    .Select(match => match.Value)
    .ToList();

C # Demo

Ответил 02/09/2018 в 12:46
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more