Dieses Spiel mir keine Treffer schenkt, scheinbar egal was:C# regex (aus einem Perl/javascript Hintergrund)
static String divine(int n)
{
if (n % 3 == 0) { return String.Join("", Enumerable.Repeat("5", n).ToArray()); }
String res = String.Join("", Enumerable.Repeat(" ", n));
Regex ItemRegex = new Regex(@"^(\\s{3}){0,}(\\s{5})*$", RegexOptions.Compiled);
Match match = ItemRegex.Match(res);
Aber diese PCRE regex perfekt an regex101.com verhält: ^(\s{3}){0,}(\s{5})*$
Es passt immer gierig zu der kleinen Gruppe (3er-Sätzen) und passt die große Gruppe nur so an, dass keine Leerzeichen am Ende nicht übereinstimmen.
Meine Frage ist, was muss ich tun, um die Regex wie erwartet in C# zu verhalten? Wenn ich raten müsste, an dieser Stelle lehne ich mich an {,}
vielleicht illegal? Ich weiß es nicht.
Regex-Regel ist unklar. Könnten Sie das mit einigen Beispielen erklären? –
Ein Grund ist '{0,}' und '*' am Ende und es passt hier ziemlich gut. Also fragst du um ** Laienheit ** an zwei Stellen. Seit '*' bedeutet "Null" oder mehr. Es nimmt Null für '{0,}' und auch für '*' und passt somit zu nichts. –
Sie können es zu regex101.com hinzufügen und dann einfach die Leertaste drücken, um die Länge der Zeichenfolge zu ändern. Es sollte nicht bis 3 Felder zusammenpassen, dann nicht zusammenpassen, dann die rechte Seite an 5 Räumen zusammenbringen. Nicht mit 7 übereinstimmen, und danach in ein Muster mit 0,1 oder 2 Matches auf der rechten Seite und dem Rest ein Match auf der linken Seite fallen. –