Pit Stop: Regex-Hilfe

Hi zusammen,
ich bräuchte mal Hilfe bei einem regulären Ausdruck.
Da es sich dabei nicht wirklich um eine meiner Stärken handelt hoffe ich auf Unterstützung:
ich habe mehrere Teile in einer textDatei, die folgendermassen aussehen:

@markierung = blablabla:

nach diesem Teil und vor diesem Teil folgen unterschiedliche stringzusammensetzungen ohne klares Muster.

Ich hätte nun gerne alle 'blablabla'-Strings der Textdatei ausgeschnitten

das kann ich ja sicherlich über preg_match_all erledigen...
Jedoch fehlt mir der Ausdruck...

danke für die Hilfe

Pit

  1. ich habe mehrere Teile in einer textDatei, die folgendermassen aussehen:

    @markierung = blablabla:

    Heißt das, es kommt ein @, gefolgt von einem bekannten Namen gefolgt von Leerzeichen, Istgleich und Leerzeichen, gefolgt von einer Zeichenfolge ohne Leerzeichen? Dann brauchst Du kein preg_match.

    Kommt das @ auch noch anderweitig vor?

    1. hi,
      ja, genauso siehts aus.
      das @ kommt allerdings noch um einiges öfter vor, da mehrere Markierungen so gekennzeichnet sind.
      wieso brauch ich da kein preg_match?

      danke, gruß pit

      1. Grüße

        wieso brauch ich da kein preg_match?

        ist die gesuchte zeichenfolge konstant, sind regular-expressions etwas übertrieben - du kannst stringfunktionen verwenden?
        MFG
        bleicher

      2. das @ kommt allerdings noch um einiges öfter vor, da mehrere Markierungen so gekennzeichnet sind.

        Das es um mehrere Markierungen geht, hast du schon gesagt. Ich fragte, ob das @ auch anderweitig vorkommen kann, also auch woanders als vor "markierung". Das ist aber auch nicht wichtig, da der Rest zutrifft.

        wieso brauch ich da kein preg_match?

        Wie bleicher schon schreibt, kannst Du nach "@markierung = " und nach dem nächsten Leerzeichen danach suchen und denn gesuchten string so extrahieren. Geh mal in die selfhtml-Forenübersicht, drücke Strg + f, gib das Wort Komma ein und drücke Enter.

        1. oh gott...
          stand vollkommen auf dem Schlauch.
          ich hatte bis dato alles über diverse String-funktionen erledigt.

          Bei dem Punkt war ich dann irgendwie der Meinung, dass es so nicht funktioniert.
          hier die Lösung, falls einer auch mal auf dem Schlauch steht:

            
          	$allMarker = strposall($content,'@MARKIERUNG= ');  
          	$markerArr= array();  
          	foreach($allMarker as $markervalues)  
          	{  
          		$marker= substr($content,$markervalues+7,30);  
          		$doublepointPos = strpos($marker,':');  
          		$marker= substr($marker,0,$doublepointPos);  
            
          		array_push($markerArr,$marker);  
          		  
          	}  
          	$markerArr= array_unique($markerArr);  
          
          

          die Funktion strposall() sucht alle Positionen einer Zeichenkette und schreibt sie in ein Array.

          danke, gruß Pit

          1. Wenn Du Strings die länger als 29?30 Zeichen sind nicht haben willst, geht das so. Innerhalb foreach würde sonst auch folgendes funktionieren:
            $marker= substr($content, $markervalues+7, strpos($content, ':', $markervalues+7)-($markervalues+7));

            Oder gleich in der Art:

            $start = strpos($content, '@MARKIERUNG= ');  
            while ($start !== false) {  
              $ende = strpos($data, ':', $start + 7);  
              if ($ende !== false) {  
                $laenge = $ende - ($start + 7);  
                ... = substr($data, $start + 7, $laenge); // was auch immer  
                $start = strpos($content, '@MARKIERUNG= ', $ende);  
                ...  
              } else {  
                $start = fasle;  
              }  
            }
            
  2. @@Pit Stop:

    nuqneH

    @markierung = blablabla:
    […]
    Ich hätte nun gerne alle 'blablabla'-Strings der Textdatei ausgeschnitten

    Du suchst also nach http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen@title='@'
    gefolgt von <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten@title=beliebig vielen (min 1)> <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen@title=Zeichen außer '='>
    gefolgt von <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten@title=beliebig viel> http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen@title=Whitespace
    gefolgt von <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten@title=beliebig vielen (min 1)> <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen@title=Zeichen außer ':'>, die du dir http://de.selfhtml.org/perl/sprache/regexpr.htm#merken@title=merken willst,
    und davon <http://de.selfhtml.org/perl/sprache/regexpr.htm#flags@title=alle Vorkommen>.

    Qapla'

    Gunnar

    --
    Bildung läßt sich nicht downloaden. (Günther Jauch)