Frage von okarin, 57

C# Regex pattern @"^[A-Z]+[a-zA-Z''-'\s]*$"?

Hallo,

ich versuche gerade folgendes Regex pattern zu verstehen: @"^[A-Z]+[a-zA-Z''-'\s]$" Eigentlich kapier ich alles soweit bis auf was das '-' und das + zulassen soll? Das pattern kommt von dieser Seite: https://docs.asp.net/en/latest/tutorials/first-mvc-app/validation.html#adding-va...

Danke für alle Antworten.

Antwort
von gfntom, 39

das Minus ist als "bis" zu lesen:

A-Z: A bis Z, also ABCDE...Z -> irgend ein Großbuchstabe

das Plus bedeutet: der vorangegangene Ausdruck kommt beliebig oft, allerdings mindesten en Mal vor.

Kommentar von okarin ,

Ja aber was soll das denn heißen ' bis ' das wär doch dann das gleiche wie '

Kommentar von gfntom ,

Deinen Einwand mit ' verstehe ich nicht.

[A-Z] bezeichnet einen Großbuchstaben zwischen A und Z.

Kommentar von gfntom ,

meinst du diesen Teil:

''-'

?

ja, das würde ich auch so interpretieren, dass dies ' entspricht.

Vielleicht kann jemand mehr dazu sagen?

Kommentar von MarkusGenervt ,

Eigentlich sollte es wohl heißen: von " bis '. Das macht aber nur Sinn, wenn hierbei alle ASCII-Zeichen von 34 bis 39 ["#$%&'] gelistet werden sollen.
Da kann ich aber nichts zu sagen, da ich den Kontext nicht kenne.

Ich vermute aber mal, dass der Autor das Minus selbst [-] mit einschließen wollte. Daher würden folgende Ausdrücke mehr Sinn ergeben:

[a-zA-Z\s"'\-]
[a-zA-Z\s"'-]

Jede Programmier-Umgebung interpretiert RegExp meist ein wenig anders. Deshalb habe ich mal beide Möglichkeiten notiert.

Der Backslash dient (manchmal) zur Literalisierung, d.h. dass das Minus nicht als Bereichsfunktion, sondern als Literal/Buchstabe ausgewertet werden soll.

Meistens reicht es aber aus, das Minus an das Ende des Bereichs zu stellen, um es als Literal interpretiert zu bekommen.

Leider kann ich Dir jetzt nicht sagen, wie genau C++ dies interpretiert, daher müsstest Du mal ausprobieren, ob mein erster Ausdruck ggf. auch das Backslash selbst mit einbezieht.

Antwort
von TobiComp, 40

Schau mal auf dieser Seite vorbei, da kannste alles testen und nachschauen :D

https://regex101.com/

Antwort
von NDercno, 2

Das hat mir geholfen:

http://regexr.com/

Ich hoffe meine Antwort war nicht allzu unnötig :D

Keine passende Antwort gefunden?

Fragen Sie die Community