Estoy teniendo un tiempo difícil regexing estos datos para extraer nombres

votos
-1

CN = Cal Sith / O = SEL, CN = Scot Shaf / O = SEL

La cadena se parece a esto, y puede haber más de 2 grupos separados por comas.

Esto es lo más cerca que estoy haciendo mal, pero:

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

Por favor, ayuda a algún gurú de expresiones regulares!

Publicado el 02/09/2018 a las 05:19
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
1

Con el fin de obtener los nombres de cadena siguiente: CN = Cal Sith / O = SEL, CN = Scot Shaf / O = SEL

Pruebe con la continuación de fragmentos:

        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"]));
        }
Respondida el 02/09/2018 a las 06:08
fuente por usuario

votos
0

Se puede usar un positivo de búsqueda hacia atrás ?<=\bCN=) para hacer valer lo que está precedente es CN=y utiliza un negativo clase de caracteres [^/]+ para que coincida con una barra inclinada no una o más veces:

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

demostración de expresiones regulares

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

Respondida el 02/09/2018 a las 12:46
fuente por usuario

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