• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Zeichenmengen: (.*) ([^/]+) usw.

Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
ich möchte ein paar rewriterules fuer meinen apache schreiben. In den Büchern werden solche Ausdruecke wie (.*) ([a-z],[A-Z]) benutzt, als weiss jeder sofort was davon was bedeutet und wie er sowas selbst schreibt. Ich weiss nichmal wie ich sowas googlen kann. geb ich bei google z.B. "([^/]+) " ein sucht google scheinbar erst garnicht los...

wie heisst sowas? Wo finde ich eine ordentliche, allgemeine Erklärung dafuer?

Ich möchte z.B. in einem Fall einen Ordnernamen+eineZiffer angeben lassen und dann die Ziffer per RewriteRule zu einem Variablenwert in nem getrequest machen.

Bisher kann ich das nur so:

Code:
RewriteRule name(.*)/gmaps.html$	/test.php?id=$1

wenn ic hdas richtig verstanden habe, lässt (.*) aber einfach alles durch und das will ich nicht. ich will da nur eine zahl bzw. eine ziffer zulassen
 
Mitglied seit
03.08.2002
Beiträge
3.257
Reaktionen
14
es gibt dazu mal ne recht coole seite.
leider vergessen, wie sie heisst / nicht gebookmarked.

erinnern tu ich mich an die verschiedenen seitentitel:

pre?
pre!

zumindest wurde da echt sehr gut erklärt, wie es läuft + man konnte da noch testeingaben bringen.
 

palandir

Guest
Regexes sind nicht allzu kompliziert, zumindest die Basics. Schau dir ein Tutorial an und benutz' ein Programm was dir anzeigt welche Teile von einem String von deiner eingegebenen Regex gematcht werden. Kann sehr hilfreich sein bei komplizierteren Regexes.

Noch ein paar allgemeine Tipps:
- versuche .* und .+ zu vermeiden wenn möglich. Sei so spezifisch wie möglich in deiner Regex, dann wird auch nix unerwartetes gematcht
- lies nach was greedy und non-greedy bedeutet
- vermeide Regex wenn es nicht nötig ist (ist schneller dann)
- benutze ^ und $ wenn möglich

Eine Ziffer matchst du mit \d, eine beliebige (auch negative) Ganzzahl mit -?\d+
 

The_Company

Guest
Das einzige, was an Regular Expressions scheisse ist, ist das jedes Programm ne andere Teilmenge davon versteht. Also falls die Regexps aus dem Tutorial nicht in den Apache Rules funktionieren, haste so einen Fall erwischt...
 
Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
naja wenn man das konzept einmal verstanden hat, ist es eigentlich nicht soooo schwer, um schon ein paar interessante sachen machen zu können. man kann es allerdings auch recht kompliziert machen. ich persönlich hab es über perl gelernt. hab da zu auch ein nettes perl programm mit dem du perl regex testen kannst. das ist sehr hilfreich, wenn du zb erstzungen in texten machen willst, kannst du damit vorher testen welche schreibweisen deine regex reagiert. also Perl, PERL, perl aber nicht perlen, Perlen, PERLEN usw.

ich hab btw vergessen dir das buch zu schicken, werd ich mal direkt nachholen. recht einfach sind regex in Learning Perl von Randal Schwartz beschrieben. kann ich nur empfehlen, auch wenn es perl spezifisch ist. wenn du unter unix / linux arbeitest, kann das eh nicht schaden ;)

hier das programm zum test:

Code:
#!/usr/bin/perl

while (<>) {                                 
           chomp;
           if ( /[COLOR=orangered]dein muster[/COLOR]/ ) {
           print "Treffer: |$`<$&>$'|\n";
           }
           else {
           print "Kein Treffer: |$_|\n";
           }
}

das programm ist aus learning perl und war mir eine grosse hilfe. deine treffer stehen in <> den eckigen klammern. wenn dein muster also zb auf Perl aber auch auf PErlen passt, wirst du das sofort sehen.

€: mal ein simples beispiel mit muster /Urlaub/:

pad@YaGaYo:~/bin> ./regexex
ich habe urlaub, sonst wuerde ich wohl kaum von Urlaub sprechen
Treffer: |ich habe urlaub, sonst wuerde ich wohl kaum von <Urlaub> sprechen|
alle anderen muessen arbeiten ;)
Kein Treffer: |alle anderen muessen arbeiten ;)|
 
Oben