Je vais avoir du mal regexing ces données pour extraire les noms

voix
-1

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

La chaîne ressemble à ceci, et il peut y avoir plus de 2 groupes séparés par une virgule.

C'est aussi proche que je reçois, mais mal:

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

S'il vous plaît aider un gourou regex!

Créé 02/09/2018 à 05:19
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
1

Afin d'obtenir les noms de chaîne suivante: CN = Cal Sith / O = SEL, CN = Scot Shaf / O = SEL

Essayez avec ci-dessous 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"]));
        }
Créé 02/09/2018 à 06:08
source utilisateur

voix
0

Vous pouvez utiliser un effet positif lookbehind ?<=\bCN=) pour faire valoir ce qui précède est est CN=et d' utiliser un négatif classe de caractères [^/]+ pour correspondre non une barre oblique une ou plusieurs fois:

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

regex démo

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

Créé 02/09/2018 à 12:46
source utilisateur

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