Reguläre Ausdrücke und die Suche nach Bindestrichen
Ferdinand Lenhardt
- php
Hallo an alle Forum-Benutzer,
ich habe neulich unter PHP3 mit der Funktion ereg() und einem regulären Audruck versucht festzustellen, ob in einem String ein Bindestrich vorkommt. Ein Bindestrich in einem regulären Ausdruck ist ein Sonderzeichen, und deshalb habe ich ihn mit einem \ escaped. Dies scheint aber nicht zu funktionieren. Daß es ohne ein \ auf keinen Fall funktionieren würde, ist mir klar. Die Funktion preg_match() möchte ich dafür aber nicht in Betracht ziehen.
Ich würde mich freuen, wenn mir jemand helfen könnte, denn ich weiß nicht, wie das Problem zu lösen ist.
Mit bestem Dank im voraus,
Ferdinand Lenhardt
Hallo Ferdinand,
ich habe neulich unter PHP3 mit der Funktion ereg() und einem regulären Audruck versucht festzustellen, ob in einem String ein Bindestrich vorkommt. Ein Bindestrich in einem regulären Ausdruck ist ein Sonderzeichen, und deshalb habe ich ihn mit einem \ escaped. Dies scheint aber nicht zu funktionieren. Daß es ohne ein \ auf keinen Fall funktionieren würde, ist mir klar. Die Funktion preg_match() möchte ich dafür aber nicht in Betracht ziehen.
Ich würde mich freuen, wenn mir jemand helfen könnte, denn ich weiß nicht, wie das Problem zu lösen ist.
es ist nicht richtig, dass der Bindestrich im regulaeren Ausdruck ein Sonderzeichen ist. Deshalb kannst Du den backslash bei der Untersuchung des Strings getrost weglassen und nach ihm suchen, wie nach jedem anderen eichen auch.
Hier eine Auflistung aller Sonderzeichen:
^ . [ ] $ ( ) * + ? { } \
Viele Gruesse
Beate Mielke
es ist nicht richtig, dass der Bindestrich im regulaeren Ausdruck ein Sonderzeichen ist. Deshalb kannst Du den backslash bei der Untersuchung des Strings getrost weglassen und nach ihm suchen, wie nach jedem anderen eichen auch.
Hier eine Auflistung aller Sonderzeichen:^ . [ ] $ ( ) * + ? { } \
Hallo Beate,
ich bedanke mich zunächst für Deine Antwort.
Trotzdem, wenn ich mich recht entsinne, habe ich den Bindestrich auch ohne \ eingesetzt, aber zwischen einem [ und einem ], was nicht funktioniert hat, weil dort der Bindestrich wohl doch ein Sonderzeichen ist.
Ich habe es nicht ausprobiert, aber ich denke, die neue Lösung statt [a-zA-Z-] müsste wohl [a-zA-Z]- sein.
Unter Perl geht auch die Lösung [a-zA-Z-], unter PHP3 aber leider nicht, was mich eigentlich zu der Verwirrung geführt hat.
Ich bedanke mich nochmal für die Antwort, die mich zu neuen Gedankengängen geführt hat, allerdings hätte vielleicht schon vorher erwähnen sollen, daß ich den Bindestrich zwischen einem [ und einem ] gesetzt habe.
Mit besten Grüßen,
Ferdinand
Ich habe es nicht ausprobiert, aber ich denke, die neue Lösung statt [a-zA-Z-] müsste wohl [a-zA-Z]- sein.
Hallo Ferdinand,
das ist leider auch nicht richtig, der von Dir zuerst genannte Ausdruck ist genau so in PHP moeglich!
Also dieser Ausdruck
[a-zA-Z-]
funktioniert. Du kannst das Minus-Zeichen auch an den Anfang setzen. Wenn Du zum Beispiel nur die Zeichen "a", "-" und "z" erlauben moechtest, dann kannst Du natuerlich nicht
[a-z]
schreiben. In diesem all muesstest Du einfach nur die reihenfolge veraendern:
[az-]
Viele Gruesse
Beate Mielke
Hi,
ich habe neulich unter PHP3 mit der Funktion ereg() und einem regulären Audruck versucht festzustellen, ob in einem String ein Bindestrich vorkommt.
Wenn es nur um den - geht, dann hilf Dir vielleicht strstr() weiter.
Jan *fastsowiedu* Lehnardt