Laden...

RegularExpressions

Erstellt von cb666 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.454 Views
C
cb666 Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren
RegularExpressions

Hallo,

ich möchte meine Dateinamen mit einen RegularExpressions Pattern testen lassen.

Dabei habe ich z.B. folgende Dateinamen: Autrag Mueller 12.doc


Regex regex = new Regex("[A-Za-z]{5} [A-Za-z] [0-9]{2}.[A-Za-z]{3}");
bool x = regex.IsMatch("Autrag Mueller 12.doc");

Leider ist das Match false. Mmmmmh.
Kann mit jemand bei dem Pattern helfen?

Danke

cb666

564 Beiträge seit 2005
vor 17 Jahren

"\w+ \w+ \d+.\w{3}"

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo cb666,

Kann mit jemand bei dem Pattern helfen?

ja, der On-the-fly Regex-Tester: Regex-Lab

herbivore

564 Beiträge seit 2005
vor 17 Jahren

Wenn man sich nicht mit Regex auskennt hilft einem der leider auch nicht.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo ZiMD,

ich verstehe deinen Einwand nicht. Wenn er Regex nicht kann, kann er auch nicht beurteilen, ob dein Pattern der richtige ist (ich übrigens auch nicht, weil ich das gewünschte Format nicht kenne). Wenn man also Regex nicht kann, hat man immer ein Problem. Außerdem hat er ja schon einen Pattern angefangen, der nur noch nicht ganz passt. Und dafür ist On-the-fly Regex-Tester: Regex-Lab genau das richtige.

herbivore

564 Beiträge seit 2005
vor 17 Jahren

Original von herbivore
Außerdem hat er ja schon einen Pattern angefangen, der nur noch nicht ganz passt.

So kann mans auch nennen 😉
Ich denke ein gutes Buch bzw http://de.wikipedia.org/wiki/Regex hilft ihm eher weiter wenn er die Grundlagen noch nicht kennt.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo ZiMD,

So kann mans auch nennen

naja, soweit weg vom Match war der Pattern ja nun nicht. Minimalinvasiv sind nur folgende Änderungen nötig:

[A-Za-z]{6} [A-Za-z]{7} [0-9]{2}****.[A-Za-z]{3}

Ansonsten stimme ich dir zu, dass man die Grundlagen von Regex kennen sollte und das mein Tools diese Grundlagen nicht ersetzen kann. Nur habe ich aufgrund des Pattern auf ausreichende Grundlagen für die Benutzung des Labs geschlossen.

Um sich die Grundlagen anzueignen reicht eigentlich schon die (fast) immer sehr gute SDK-/MSDN-Doku: Reguläre Ausdrücke von .NET Framework.

herbivore

2.223 Beiträge seit 2005
vor 17 Jahren

moin

wie man beim Regex String des Posters erkennen kann hat er die Grundlagen drauf

bei ersten überfliegen sah man aber bereits das der zweite bereich kein anzahl angegeben hat ok und der Erste 6 zeichen lang ist aber trotzdem hätte es passen können

und ob dieser so das richtige für Ihn ist ist halt fraglich ("\w+ \w+ \d+.\w{3}")

(s s 1.bat) Match

mfg

564 Beiträge seit 2005
vor 17 Jahren

Original von herbivore
[A-Za-z]{6} [A-Za-z]{7} [0-9]{2}****.[A-Za-z]{3}

Deswegen denk ich auch, dass hier eher zusammenkopiert wurde. Warum sollte man es sonnst beim 1. Mal fast richtig machen und beim 2. Mal vergessen?

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo ZiMD,

naja, jetzt wirds langsam affig 🙂 Um einen Pattern zusammen zu kopieren, der so nah an einem Match ist, ohne gewisse Grundlagen zu haben, braucht man aber eine Menge Glück. Wenn meine Pattern nicht gleich matchen, dann liegt das jedenfalls an zwei Sachen: Dass ich vergessen habe runde Klammern zu quoten ... oder dass ich an irgendeiner Stelle einen Wiederholungsoperator vergessen habe. 🙂

Davon abgesehen, können wir die Diskussion auch gerne beenden, weil wir beide unsere Vorschläge gemacht haben und cb666 ja aus den verschiedenen Vorschlägen, den oder die für sich passenden aussuchen kann.

Lustig ist auch das cb666 hier fleißig mitliest, ohne mal ein klärendes Wort zu schreiben. 🙂

herbivore

C
cb666 Themenstarter:in
19 Beiträge seit 2006
vor 17 Jahren

erstmal danke.
ich fuchse mich gerade in die regulären ausdrücke rein.

den On-the-fly Regex-Tester Regex-Lab hab ich mir jetzt erstmal gezogen.

T
512 Beiträge seit 2006
vor 17 Jahren

\w ist übrigens das gleiche wie [A-Za-z0-9_]

Sprich alphanumerische Zeichen und Unterstrich

e.f.q.

Aus Falschem folgt Beliebiges

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Traumzauberbaum,

nicht in .NET:

\w
Entspricht einem beliebigen Wortzeichen. Entspricht den Unicode-Zeichenkategorien [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]. Wenn mit der ECMAScript-Option ECMAScript-konformes Verhalten angegeben wurde, ist \w gleichbedeutend mit [a-zA-Z_0-9].

herbivore

T
512 Beiträge seit 2006
vor 17 Jahren

Nur um das mal zu übersetzen:
\p{Ll} "Letter, Lowecase"
\p{Lu} "Letter, Uppercase"
\p{Lt} "Letter, Titlecase"
\p{Lo} "Letter, Other"
\p{Lm} "Letter, Modifier"
\p{Nd} "Number, Decimal Digit"
\p{Pc} "Punctuation, Connector"

Also alle Arten von Buchstaben, Ziffern und "Verbinder"

Also bei normalen Strings das gleiche wie [a-zA-Z_0-9], nur bei Unicode Strings sind es noch mehr. Wird nur fälschlicherweise oft (und wohl auch hier von einigen) als Buchstabe angenommen.

e.f.q.

Aus Falschem folgt Beliebiges