Silva1234: preg_match Suchmuster

Hallo,

ich bitte um eurer Hilfe.
Ich bekomm es leider einfach nicht gebacken, das entsprechende Suchmuster zu schreiben, obwohl ich schon hier http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Reguläre_Ausdrücke
versucht habe alles nachzulesen und hier http://regexp-evaluator.de/evaluator alles ausprobiert habe.

Es geht mir um folgendes:

Ich möchte den String $x auf $y durchsuchen

$x = 'http://localhost/de/wasauchimmer'
$y = 'http://localhost/XX/'

dafür hab ich sowas als Suchmuster probiert
http://localhost/([a-zA-Z]{2})([/]?)([^a-zA-Z0-9_])

das sollte bewirken, dass überprüft wird, ob der String $x 'http://localhost/' dann zwei Buchstaben und dann eine Flash (oder auch nicht) enthält, und danach nichts mehr kommt.

Heißt:

$x = 'http://localhost/de/wasauchimmer'
====> Ausdruck gefunden

$x = 'http://localhost/de/'
====> Ausdruck gefunden

$x = 'http://localhost/de'
====> Ausdruck gefunden

$x = 'http://localhost/wasauchimmer'
====> Ausdruck NICHT gefunden

Wie kann ich das realisieren?
Silva1234

  1. @@Silva1234:

    nuqneH

    Wie kann ich das realisieren?

    Du prüfst, ob nach http://localhost/[a-zA-Z]{2} ein Schrägstrich (wenn du des Englischen nicht mächtig bist, sprich doch deutsch) (/) oder (|) das Ende ($) folgt.

    Bedenke, dass Sprachkürzel länger als zwei Zeichen sein können.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Suchmuster: '!http://localhost/[a-zA-Z]{2}[/]?$!'

      Funktioniert für den mittleren und unteren Fall.
      Der erste Fall trifft allerdings nicht zu??

      Ich bin des Englischen mächtig nur leider hat die Autokorrektur aus Slash Flash gemacht. =)

      LG

      1. @@Silva1234:

        nuqneH

        Suchmuster: '!http://localhost/[a-zA-Z]{2}[/]?$!'

        Funktioniert für den mittleren und unteren Fall.
        Der erste Fall trifft allerdings nicht zu??

        Du hast ja auch angegeben, dass nach [a-zA-Z]{2} noch ein '/'* kommen darf (aber nicht muss), dann aber Schluss ist, also keine weiteren Zeichen mehr kommen dürfen.

        Ich hatte dir die Lösung doch schon genannt: Slash oder Ende (/|$).

        Qapla'

        * Bei einem einzelnen Zeichen brauchst du keine Zeichenklasse. Du kannst die eckigen Klammer weglassen.

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
      2. Suchmuster: '!http://localhost/[a-zA-Z]{2}[/]?$!'

        Funktioniert für den mittleren und unteren Fall.
        Der erste Fall trifft allerdings nicht zu??

        Dein ursprüngliches Suchmuster passt aber nicht zu deinen Solltreffern.
        [^a-zA-Z0-9_] trifft auf ALLE Zeichen AUSSER denen nach dem ^ angegeben zu.

        Du suchst wohl eher:
        http://localhost/([a-zA-Z]{2})(?:/([a-zA-Z0-9_]+)|/?)$