Ich muss eine Zeichenfolge analysieren und um jeden Guid-Wert einfache Anführungszeichen setzen. Ich dachte, ich könnte einen Regex verwenden, um dies zu tun, aber ich bin nicht gerade ein Regex-Guru.
Gibt es einen guten Regex, um einen Guid zu identifizieren?
Meine zweite Frage ist, sobald ich einen gültigen regulären Ausdruck gefunden habe, von dem ich annehme, dass ich ihn verwenden würde, Regex.Replace(String, String, MatchEvaluator)
aber ich bin mir der Syntax nicht ganz sicher. Vielleicht so etwas wie:
return Regex.Replace(stringToFindMatch, GuidRegex, match =>
{
return string.Format("'{0}'", match.Groups[0].ToString());
});
Eine Zeichenfolge, die ich zu analysieren versuche, sieht möglicherweise folgendermaßen aus:
"SELECT passwordco0_.PASSWORD_CONFIG_ID als PASSWORD1_46_0_, FROM PASSWORD_CONFIG passwordco0_ WHERE passwordco0_.PASSWORD_CONFIG_ID = baf04077-a3c0-454b-ac6f-9fec00b8e170;
Antworten:
Dieser ist recht einfach und erfordert keinen Delegierten, wie Sie sagen.
Dies entspricht den folgenden Stilen, die alle äquivalente und akzeptable Formate für eine GUID sind.
Update 1
@NonStatic weist in den Kommentaren darauf hin, dass der obige reguläre Ausdruck mit falsch positiven Ergebnissen übereinstimmt, die ein falsches schließendes Trennzeichen haben.
Dies kann durch Regex-Bedingungen vermieden werden, die weitgehend unterstützt werden.
Bedingungen werden von der JGsoft-Engine, Perl, PCRE, Python und dem .NET-Framework unterstützt. Ruby unterstützt sie ab Version 2.0. Sprachen wie Delphi, PHP und R, deren Regex-Funktionen auf PCRE basieren, unterstützen ebenfalls Bedingungen. (Quelle http://www.regular-expressions.info/conditional.html )
Der folgende reguläre Ausdruck stimmt überein
Und wird nicht passen
Regex:
Die Lösungen werden vereinfacht, um nur Zahlen zuzuordnen und klarer zu zeigen, was bei Bedarf erforderlich ist.
quelle
[0-9a-fA-F\-]{32,36}
.https://support.office.com/en-us/article/poisson-function-d81f7294-9d7c-4f75-bc23-80aa8624173a
Die grundlegendste Regex lautet wie folgt:
oder Sie können es hier einfügen .
Hoffe das spart dir etwas Zeit.
quelle
[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}
Die Bindestriche können optional gemacht werden :[0-9A-Fa-f]{8}-?([0-9A-Fa-f]{4}-?){3}[0-9A-Fa-f]{12}
.Damit C # .Net eine Guid-Zeichenfolge aus dem angegebenen Text findet und ersetzt,
Verwenden Sie dieses RegEx:
Beispiel C # -Code:
Funktioniert sicher! Und es entspricht und ersetzt die folgenden Stile, die alle äquivalente und akzeptable Formate für eine GUID sind.
quelle
In .NET Framework 4 gibt es die System.Guid-Erweiterungsstruktur. Dazu gehören die neuen TryParse- und TryParseExact-Methoden zum Parsen der GUID. Hier ist ein Beispiel dafür.
In diesem Beispiel erstellen wir ein neues Guid-Objekt und nehmen auch eine Zeichenfolgenvariable mit ungültiger Guid. Danach verwenden wir die TryParse-Methode, um zu überprüfen, ob beide Variablen ein gültiges Guid-Format haben oder nicht. Anhand eines Beispiels können Sie sehen, dass die Zeichenfolgenvariable kein gültiges Guid-Format hat und die Meldung "InValid Guid" ausgibt. Wenn die Zeichenfolgenvariable eine gültige Guid hat, gibt dies in der TryParse-Methode true zurück.
quelle
Sie können den C # -Code einfach automatisch generieren, indem Sie Folgendes verwenden: http://regexhero.net/tester/ .
Es ist kostenlos.
So habe ich es gemacht:
Die Website generiert dann automatisch den .NET-Code:
quelle
Ich benutze ein einfacheres Regex-Muster
quelle