Laden...

Reguläre Ausdrücke: Rechteckig Klammern im Input erkennen

Erstellt von Taucher vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.756 Views
T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 11 Jahren
Reguläre Ausdrücke: Rechteckig Klammern im Input erkennen

Hallo Gemeinde,

da ich immer wieder Schwierigkeiten mit den regulären Ausdrücken habe eröffne ich mal diesen Thread weil es sicherlich noch mehrere gibt die sich da schwer tun reinzukommen.
Ich selbst habe schon einige Anleitungen und Beispiele dazu gelesen, aber irgendwie verstehe ich da irgendetwas nicht richtig, so dass ich oft ohne Hilfe nicht zum erwünschten Ergebnis komme.
Vielleicht schafft es ja einer von euch mir den "Ruck" zu geben das es Klickt macht und der große "Ah"-Effekt auftritt.
Zum Beispiel habe ich dieses einfache Suchziel:

input[name]

Jetzt verwende ich dieses Muster:

^[a-zA-Z]{1,}[\[name\]]{1}$

Zur Erklärung wie ich das Muster verstehe:


^ = beginne die Suche am Satzanfang
[a-zA-Z]{1,} = folgend nach dem Satzanfang muß ein oder mehrere Zeichen wie angegeben stehen
[\[name\]]{1} = darauffolgend muß dann [name] kommen
$ = das gesuchte Muster bis zum Ende so aussehen wie vorgegeben

So, aber jetzt habe ich keinen Treffer und das verstehe ich nicht.
Wenn ich das Dach (^) und das Dollarzeichen ($) weglasse dann trifft er:


input[
name]

was ich wiederrum überhaupt nicht verstehe.

Was um alles in der Welt verstehe ich bei den regulären Ausdrücken falsch?

2.298 Beiträge seit 2010
vor 11 Jahren

Was genau willst du denn überhaupt auslesen? [name] oder den Text vor [name]?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

1.346 Beiträge seit 2008
vor 11 Jahren

Ich glaube du verstehst das [] noch nicht so ganz. Im Grunde kommt dabei in die eckigen Klammern Kriterien für ein Zeichen im Text. Das können sowohl Positive (darf ein a b c sein), als auch negative (alles ausser a b c). In deinem Fall sind die zweiten eckigen Klammern fehl am Platze. Außerdem ist das {1} vollkommen überflüssig. Wenn nicht weiter angegeben darf der Ausdruck genau einmal auftreten. Das {1,} kann man, wenn man mag auch durch ein + ersetzen. Das bewirkt das selbe. Der richtige Ausdruck ist also

^[a-zA-Z]+\[name\]$
T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 11 Jahren

inflames2k

Was genau willst du denn überhaupt auslesen? [name] oder den Text vor [name]?

Jetzt in diesem Beispiel wäre es genau das Suchmuster finden. Also input[name]. Aber das war nur ein Beispiel weils mir generell darum geht.

pdelvo

Ich werde da mal einige Tests machen. Vielleicht hast du recht.

W
872 Beiträge seit 2005
vor 11 Jahren

Probier mal Regulator aus, zum Testen und Lernen...

T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 11 Jahren

Danke, ich habe den Rad Software Regular Expression Designer. Den finde ich ganz gut auch wenn ich den bisher sehr oft verflucht habe, was aber wohl nicht an dem Designer lag 😉
Aber den anderen schau ich mir gerne mal an, danke.

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo Taucher,

Regex Lesen ist relativ schwierig, aber das Schreiben geht um einiges leichter. Da hier nun schon ein paar Tools genannt wurden, nenne ich jenes das mir am meisten geholfen hat: On-the-fly Regex-Tester: Regex-Lab Praktisch ist dort die kompakte und übersichtliche F1-Hilfe mit den wichtigsten Bestandteilen von Regex. Ansonsten findet sich in der MSDN unter .NET Framework Regular Expressions eine ausführlichere Hilfe mit vielen Beispielen. Bedenke dabei das eingangs Erwähnte: Schreiben ist leichter als das Lesen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 11 Jahren

Also ich habe das jetzt getestet und mein Verständnisproblem lag in der Tat nur an der Klammerung mit den []-Klammern. Seit dem klappt alles wunderbar und ich erreiche problemlos das was ich auch will.
Vielen Dank nochmal an pdelvo für den entscheidenden Tipp!