ich eine Zeichenfolge analysieren müssen, die eine der folgenden sein kann:Extract Zertifikatnamen mit Regex in C#
"CN=bbb1, OU=b, O=b, L=b, S=b, C=US" //expected result bbb1
"CN=*.host.com, OU=b, O=b, L=b, S=b, C=US" //expected result *.host.com
"CN = *.host.com " //expected result *.host.com
"CN = bbb1 " //expected result bbb1
ich folgende Parsing-Funktion für das schrieb:
public static string GetCertificateName(string certSubject)
{
System.Text.RegularExpressions.Regex regex;
try
{
regex = new System.Text.RegularExpressions.Regex(@"CN\s*=\s*(?<name>\w+)");
var match = regex.Match(certSubject);
return match.Groups["name"].Value;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
return "Can't parse";
}
static void Main(string[] args)
{
Console.WriteLine(GetCertificateName("CN=bbb1, OU=b, O=b, L=b, S=b, C=US")); //bbb1
Console.WriteLine(GetCertificateName("CN = bbb3 "));//bb33
Console.WriteLine(GetCertificateName("CN = bbb4\n\t "));//bbb4
Console.WriteLine(GetCertificateName("CN=*.host.com"));//empty string!!! != *.host.com
Console.ReadLine();
}
Bitte helfen Sie mir meine Parsing-Funktion so GetCertificateName ("CN = *. host.com") Anruf zurück * .host.com vielen Dank, Natalie
'Bitte helfen Sie mir improve' Was genau muss verbessert werden? – Abion47
'\ w +' stimmt nicht mit '*' überein. Ändern Sie es in '\ S +' oder '[\ w *] +' und es sollte funktionieren. –
Überprüfen Sie dies: https://regex101.com/r/LsTjYb/3 – MYGz