Pekka bittet um Regex-Hilfe

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by 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)

    Comment


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

      Comment


      • #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°
                )
        
        )

        Comment


        • #5
          Danke an beide!!!

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

          Comment


          • #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)

            Comment


            • #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.

              Comment


              • #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

                Comment

                Working...
                X