Ich habe den folgenden Satz
Code: Select all
#bb John can #20 jiang stone [voila]
Ich möchte, dass mein C#-Regex mir 5 Übereinstimmungen mit meinen Gruppen gibt
Davon sind die Token an den Positionen #bb und voila optional.
Ich habe den folgenden regulären Ausdruck verwendet, der gut in einem Satz funktioniert, der nicht das erste #bb hat – zum Beispiel
gibt mir 4 korrekte Token mit dem Ausdruck
Aber wenn ich das erweitere mit
Code: Select all
@"(?:#[a-zA-Z])?(.*)#(\d+)(.*\s)(?:\[(.*)\])?"
Es funktioniert nicht. Das #bb am Anfang des Satzes wird nicht als separates Token abgeglichen – stattdessen erhalte ich eine Übereinstimmung als
Ich habe mehrere Varianten ausprobiert, aber keine bietet mir eine optionale Übereinstimmung mit der ersten #.. Übereinstimmung. Was
ich möchte ist, dass dies #{1 oder 2 Zeichen} sein kann und dies optional sein kann. Ich kann es haben, oder es fehlt möglicherweise. In diesem Fall sollte der Rest die Token zurückgeben.
Was stimmt mit meiner Regex nicht?
Vielen Dank für Ihre Hilfe