Reguläre Ausdrücke, positionen bestimmen und in DB speichern.

Gray

Erfahrenes Mitglied
1.

ich möchte per eregi herausfinden ob an dritter und vierter stelle je ein Bindestrich steht, keine ahnung wie ich das mit der Position rausfinden kann.

2.

wenn ich mein Regexp speichern will in einer Datenbank meldet mir MySQL einen Fehler in meiner Syntax, wie kann ich das verhindern? (RegExp war nur: [a-z])
 
Hallo,

zu 1.:
Folgt nach den Bindestrichen noch etwas? Wenn ja, dann könnte der Regex passen:
Code:
/.{2}-{2}.*/
Hoffentlich stimmt das, ich bin noch nicht so ganz fit im Ungang mit regulären Ausdrücken :)

Ceppi
 
1. Der reguläre Ausdruck müsste so lauten:
Code:
^.{2}-{2}.*
Eine bessere Möglichkeit wäre allerdings substr() anstatt regulärer Ausdrücke.

2. Wenn der reguläre Ausdruck nur [a-z] lautet, hab ich keine Ahnung. Dazu musst du den Query posten (gleich mit Fehlermeldung). Außerdem solltest du überprüfen, ob die entsprechende Spalte den richtigen Typ hat.
 
[…] ich möchte per eregi herausfinden ob an dritter und vierter stelle je ein Bindestrich steht […]
Ich würde folgenden regulären Ausdruck verwenden:
Code:
^.{2,3}-

[…] wenn ich mein Regexp speichern will in einer Datenbank meldet mir MySQL einen Fehler in meiner Syntax, wie kann ich das verhindern? (RegExp war nur: [a-z])
Möglicherweise muss der Ausdruck für die Abfrage vorbereitet werden. (Vgl. mysql_real_escape_string()-Funktion)
 
THX ^.{2,3}- hat schon sehr geholfen, allerdings reagiert es auch wenn an dritter oder vieter possition ein Bindestrich steht, es soll aber nur reagieren wenn genau an dritter und vieter stelle ein Bindestrich steht
 
[…] ich möchte […] herausfinden ob an dritter und vierter stelle je ein Bindestrich steht […]
[…] allerdings reagiert es auch wenn an dritter oder vieter possition ein Bindestrich steht, es soll aber nur reagieren wenn genau an dritter und vieter stelle ein Bindestrich steht […]
Du solltest dich beim nächsten Mal präziser ausdrücken.
Code:
^(?:[^-]{2}-[^-]+|[^-]{3}-)
 
thx, aber da kommt ein Fehler:

PHP:
Warning: eregi(): REG_BADRPT in /home/www/web1/html/ssl/user/whois.php on line 28

kann mir jemand was empfehlen um Regexp vernünftig zu lernen?
 
mit preg_match bekomme ich zwar keinen Fehler, aber dafür stört es auch nicht wenn an dritter und vieter stelle ein Bindestrich steht.
 
Bitte beschreibe noch einmal detailliert, welche Zustände der Bindestrichpositionierungen möglich sein sollen.
 
Zurück