Ergebnis 1 bis 6 von 6

Thema: regular expression

  1. #1
    Meister(in)
    Registriert seit
    27.03.2009
    Ort
    Berlin
    Beiträge
    278
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard regular expression

    Hallo zusammen,
    ich schaffe es einfach nicht mit den regular expressions umzugehen. Und würde mich über Hilfe sehr freuen.

    Ich habe folgenden Code

    PHP-Code:
       preg_match_all("|<h1>(.*?)</h1>|"$bericht$a);
       echo 
    "Koordinaten sind: {$a[1][0]}"
    Das ist erstmal schon ganz gut.
    Die Ausgabe hier ist:
    Code:
    Koordianten sind: Bericht von Gloyonaid (333:183:G)
    Was ich aber nun möchte ist die Reinfolge aus Zahlen und dem Buchstaben mit den Doppelpunkten.
    Diese steht aber nicht immer in Klammern! Jedoch immer zwischen den Tags H1!

    Ich habe es schon versucht mit
    PHP-Code:
    preg_match_all("|<h1>([0-9]{3}):([0-9]{3}):([A-Z]{1})</h1>|"$bericht$a); 
    Das ich da scheinbar einen Denkfehler habe ist fast sehr offensichtlich.
    Auf jeden Fall wird es mit einer Fehlermeldung bestätigt... :/
    Jedoch komme ich nicht darauf.
    Und eh ich mir jetzt alle Haare ausraufe, frage ich lieber um Hilfe.

    Vielen Dank schon mal.
    Alles liebe
    thilda
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Prinz(essin)
    Registriert seit
    26.03.2013
    Beiträge
    835
    Danke
    20
    Bekam 76 mal "Danke" in 75 Postings

    Standard AW: regular expression

    Warum denn so kompliziert?

    Teile das mit explode und Anhand des Leerzeichens in ein Array und das letzte Element des Array enthält dann deine gesuchten Koordinaten.
    Anschliessend evtl. Klammern entfernen.

  3. #3
    Meister(in)
    Themenstarter

    Registriert seit
    27.03.2009
    Ort
    Berlin
    Beiträge
    278
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: regular expression

    Klar könnte ich das so machen.
    Ich finde es aber nicht kompliziert es auf die weise zu machen wie ich es vorhabe.
    Es bedeutet einfach ein paar Zeilen weniger Code.

    Das einzig komplizierte daran ist, derzeit für mich, die Umsetzung. Weil ich mit Regular Expressions einfach nie wirklich klar gekommen bin.

  4. #4
    König(in) Avatar von Grevas
    Registriert seit
    20.04.2009
    Ort
    In meiner Wohnung.
    Alter
    30
    Beiträge
    1.039
    Danke
    0
    Bekam 5 mal "Danke" in 5 Postings

    Standard AW: regular expression

    Anhand deines Beispiels sieht es in http://www.regexr.com/ eigtl. alles gut aus. Aber sicher, dass die Koordinaten immer 3-stellig sind? [0-9]{1,3} oder \d+ wäre da wohl angebrachter.

    Getestet mit $bericht="Bericht von Gloyonaid (333:183:G)"

    Ergebnis:
    3 capturing groups:
    group 1: ([0-9]{3})
    group 2: ([0-9]{3})
    group 3: ([A-Z]{1})


    Gib doch mal bitte einen richtigen Kontext. (Einen größeren Ausschnitt aus $bericht)

    Außerdem, verwende bitte keine RegEx-Zeichen als Begrenzung, das ist doch etwas verwirrend beim drüberschauen
    Um nur mal sicher zu gehen, lass dir mal $a ausgeben mit print_r e.ä., das Ergebnis unter [1][0] ist der gesamte match, nicht die Gruppen die du haben willst.

    //P.S. jetzt seh ichs erst. Das kommt von, wenn man kein ordentliches Beispiel postet. Die Koordinaten sind garantiert nicht direkt hinter <h1>. Auch fehlt die schließende Klammer hinter den Koordinaten (da du sofort nach </h1> suchst).
    Mach mal draus
    Code:
    ~<h1>.+\((\d+):(\d+):(\w+)\).*</h1>~
    , dann sollte es ausch fruchten. FYI, reguläre Ausdrücke liest man nicht, man untersucht sie *g* (zugegeben, dieses Beispiel war aber noch lesbar genug...)
    Falls "<" ein unerlaubtes Zeichen im Spielernamen ist wäre
    Code:
    ~<h1>[^<]+\((\d+):(\d+):(\w+)\).*</h1>~
    besser. (.* hinter der Klammer sicherheitshalber hinzugefügt, falls da noch leerzeichen o.ä. stehen würden)

    Getestet mit: "<h1>Bericht von Gloyonaid (333:183:G) </h1>"

    Zitat Zitat von explanator Beitrag anzeigen
    Warum denn so kompliziert?

    Teile das mit explode und Anhand des Leerzeichens in ein Array und das letzte Element des Array enthält dann deine gesuchten Koordinaten.
    Anschliessend evtl. Klammern entfernen.
    Weil du den Kontext nicht verstanden hast. Das ist wohl eine Scrapping Aufgabe, da kommst du ohne vorherige Suche / Eingrenzung nicht weiter mit nem stinkigen Explode alleine. Außer du meinst den Ausdruck so zu lassen wie er ist und nachbearbeiten, da kann man aber das gleich anders macen.
    Aber ich würde auch eher empfehlen, ein Format zu definieren wie so ein Bericht eigtl. aussieht um einmal richtig zu parsen - damit hat sichs dann auch (sieht nach nem Browser-Game aus, die Formatierung ist also mehr oder minder fest)... Sprich, Zeilenweise parsen wäre imo der einfachere Weg. (Data -> Model -> be happy & done)
    Geändert von Grevas (23.03.2014 um 01:42 Uhr)

  5. #5
    Meister(in)
    Themenstarter

    Registriert seit
    27.03.2009
    Ort
    Berlin
    Beiträge
    278
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: regular expression

    Hey Grevas,
    ich hab jetzt mal dein 1.bsp übernommen und es spielt soweit.
    Für mich ist jetzt die Frage:
    ist es allg ausgeschlossen die 3 teile der Koordinaten in einem zu bekommen?
    Weil dann weiß ich auch wo noch ein Denkfehler bei mir lag. Und Leerzeichen gibt es keine weiteren. Und auch sind es immer jeweils drei Zahlen und ein Buchstabe.

  6. #6
    König(in) Avatar von Grevas
    Registriert seit
    20.04.2009
    Ort
    In meiner Wohnung.
    Alter
    30
    Beiträge
    1.039
    Danke
    0
    Bekam 5 mal "Danke" in 5 Postings

    Standard AW: regular expression

    Code:
    ~<h1>[^<]+\((\d+:\d+:\w+)\).*</h1>~
    Wäre dann halt match[1] = 333:183:G (da du die erste Gruppe auswählen musst), bin mir nicht ganz sicher bei dem index. Musst nur deine Gruppen so wählen wie du die haben willst.

Ähnliche Themen

  1. Regular Expression
    Von FaFoo im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 13
    Letzter Beitrag: 07.10.2010, 20:17
  2. <IMG Regular Expression
    Von 1234d1 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 12.02.2010, 13:52
  3. Regular Expression (abc-abc-abc.de) geht nicht :(
    Von Darkxor im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 07.12.2009, 13:37
  4. Regular Expression Links von href="" auslesen
    Von 1234d1 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 14
    Letzter Beitrag: 11.09.2009, 16:29
  5. regular expressions =/
    Von baloo im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 03.01.2005, 10:51

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •