hawkmaster: Hilfe für RegEx gesucht

Hallo zusammen,

puhh die Reguläre Ausdrücke machen mich noch fertig :-)
Ich suche in einer Textdatei nach Text und zwar alles zwischen:

*OpenUI *MediaType/Media Type:PickOne
...
...
*CloseUI: *MediaType

Das Wort "MediaType" ist bekannt und steht in der Variablen $element.
Jetzt gibt es aber auch Stellen bzw. Dateien wo vor dem Wort "MediaType" noch zwei Buchstaben sind, also etwas "EFMediaType" oder "RXMediaType" etc.:
also:
*OpenUI *EFMediaType/Media Type:PickOne
...
...
*CloseUI: *EFMediaType

Jetzt würde ich gerne die Regex so abändern das es immer für beide Varianten funktioniert.

Ich habe jetzt versucht hinter dem "*" und vor $element das Suchmuster (.*?) zu setzen.

if (preg_match_all("#\OpenUI \(.*?)".$element."(/(.*?):|:) (.*?)\CloseUI: \(.*?)".$element."#s", $string1, $contents)){
print_r($contents);
if (preg_match_all("#\*(.*?)".$element." (.*?)/(.*?): {1,}"(.*?)"#s", $contents[0][0], $input)){
...
Jetzt wird zwar was gefunden aber das Ergebnis in $contents ist nun viel größer und enthält alles mögliche.

Mache ich was falsch?
Bin für jeden Rat dankbar.

vielen Dank und viele Grüße
hawk

  1. Hi,

    Jetzt gibt es aber auch Stellen bzw. Dateien wo vor dem Wort "MediaType" noch zwei Buchstaben sind, also etwas "EFMediaType" oder "RXMediaType" etc.:

    also zwei optionale Großbuchstaben? Dafür schreibst Du dann ganz simpel: [A-Z]{0,2} (nicht ganz exakt, weil das auch auf einen einzelnen Buchstaben matched).

    freundliche Grüße
    Ingo

    1. @@Ingo Turski:

      Jetzt gibt es aber auch Stellen bzw. Dateien wo vor dem Wort "MediaType" noch zwei Buchstaben sind, also etwas "EFMediaType" oder "RXMediaType" etc.:

      Sind mehrere solcher Dinger im Dokument? Reguläre Ausdrücke sind recht http://de.selfhtml.org/perl/sprache/regexpr.htm#gierig_genuegsam@title=gierig.

      also zwei optionale Großbuchstaben? Dafür schreibst Du dann ganz simpel: [A-Z]{0,2} (nicht ganz exakt, weil das auch auf einen einzelnen Buchstaben matched).

      (?:[A-Z]{2})?

      Live long and prosper,
      Gunnar

      --
      Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
      1. Hi,

        (?:[A-Z]{2})?

        stimmt, eine optionale Assertion ist natürlich genauer und landet auch nicht im Ergebnis.

        freundliche Grüße
        Ingo

      2. Hallo ihr lieben Helfer,
        vielen Dank für eure Tipps.

        (?:[A-Z]{2})?

        das sieht ja gut aus. Muss ich mal ausprobieren.
        Was macht denn das ?: ganz am Anfang?

        vielen Dank erstmal und viele Grüße
        hawk

        1. (Hallo|Hi(ho)|Nabend hawkmaster,

          (?:[A-Z]{2})?

          das sieht ja gut aus. Muss ich mal ausprobieren.
          Was macht denn das ?: ganz am Anfang?

          Es sorgt dafür, dass das Subpattern (alles was zwischen den runden Klammern steht) nicht in die interne Subpattern-Liste aufgenommen wird.

          http://de.php.net/manual/de/regexp.reference.php (Suche nach der Überschrift "Subpatterns")

          MffG
          EisFuX