Pekka bittet um Regex-Hilfe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Pekka bittet um Regex-Hilfe

    Ich sitze wie kürzlich geschrieben an einem Riesenprojekt, bin schon über der Deadline, sehr angespannt und stoße auf eine alte Schwachstelle: Regexe.
    Ich hab echt keine Zeit, da stundenlang rumzuprobieren, deshalb dachte ich ich versuchs mal mit Schnorren.
    Hätte jemand Lust, einen Regex für preg_match_all zu bauen, der mir alles aus einem großen String liefert, was zwischen zwei Gradzeichen (°) steht.

    Also z.B.

    lorem ipsum °dolor° sit amet, quad °elipiscing° elit und so weiter

    liefern sollte er also
    °dolor°
    und
    °elipiscing°

    und er sollte mit "ungeraden" Vorkommnissen umgehen können, also daß wenn nur ein Zeichen vorkommt, nicht geparst wird.

    Wenn das jemand machen will, wär ich sehr dankbar.

  • #2
    PHP-Code:
    $reg =  '/(°[^°]*°)/is'
    müsste funzen (http://regexp-evaluator.de/evaluator...ffed/#ergebnis)
    Frage: Können zwischen den zwei Gradzeichen auch Leerzeichen vorkommen?
    Falls nein, dann wäre dieser RegExp wohl besser
    PHP-Code:
    $reg '/(°[^\\s]*°)/'
    http://regexp-evaluator.de/evaluator...e44b/#ergebnis

    Gruss

    tobi
    Zuletzt geändert von jahlives; 28.12.2007, 11:17.
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Super, vielen vielen dank! Teste ich nachher gleich aus.

      Kommentar


      • #4
        ist ja nun wirklich nicht schwer
        meinst du das so?
        PHP-Code:
        $pattern '/°.+°/U';
        $text 'lorem ipsum °dolor° sit amet, quad °elipiscing° elit und so weiter';
        preg_match_all($pattern$text$matches); 
        Code:
        Array
        (
            [0] => Array
                (
                    [0] => °dolor°
                    [1] => °elipiscing°
                )
        
        )

        Kommentar


        • #5
          Danke an beide!!!

          OffTopic:
          Das wär ein Umsatzbringer: Ein Regex-Seminarwochenende, powered by the PHP Resource...

          Kommentar


          • #6
            @3DMax
            Hast du deinen RegExp mal mit einem solchen String probiert?
            Code:
            lorem ipsum °dolor° sit °amet°, °quad °elipiscing° elit und °so
            Ergibt
            Code:
            Array
            (
              [0] => °dolor°
              [1] => °amet°
              [2] => °quad °
              [3] => ° elit und °
            )
            'quad' sollte nicht gematched werden, 'elit und' ebenfalls nicht. Aber 'elipiscing' sollte gematched werden.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Original geschrieben von jahlives
              'quad' sollte nicht gematched werden, 'elit und' ebenfalls nicht. Aber 'elipiscing' sollte gematched werden.
              das ist meiner meinung nach richtig.
              _ALLES_, was zwischen zwei ° steht. und leerzeichen gehören auch dazu. ansonsten halt a-Z oder \w.

              Kommentar


              • #8
                Das ist halt das Problem bei Regexen ... erstmal genau feststellen, was man selbst will, bevor man das versucht dem PC klar zu machen

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar

                Lädt...
                X