Eu estou tendo um momento difícil regexing esses dados para extrair nomes

votos
-1

NC = Cal Sith / S = SEL, CN = Scot Shaf / S = SEL

A corda se parece com isso, e pode haver mais de 2 grupos separados por vírgula.

Este é o mais perto que eu estou ficando, mas errada:

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

Por favor, ajude algum guru regex!

Publicado 02/09/2018 em 05:19
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

A fim de obter os nomes de seguinte cadeia: CN = Cal Sith / O = SEL, CN = Scot Shaf / O = SEL

Tente com abaixo trechos:

        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"]));
        }
Respondeu 02/09/2018 em 06:08
fonte usuário

votos
0

Você poderia usar um positivo lookbehind ?<=\bCN=) para afirmar o que é anterior é CN=e usar um negativo classe de caracteres [^/]+ para corresponder não uma barra uma ou mais vezes:

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

regex demonstração

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

Respondeu 02/09/2018 em 12:46
fonte usuário

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