hawkmaster: Hilfe bei regulärem Ausdruck gesucht

Beitrag lesen

Hallo zusammen,
ich lese eine Textdatei in einen String und durchsuche diese dann nach bestimmten Vorkommen.
Beispiel:
*OpenUI *StapleLocation/Staple: ...
...
*CloseUI: *StapleLocation

Das klappt z.b. mit dem Ausdruck: In der Variablen $element steht das Wort "StapleLocation"

  
if (preg_match_all("#\*OpenUI\s+\*".$element."(/(.*?):|:)\s?(.*?)\*CloseUI[^ ]*: \*".$element."#s", $string1, $contents)){  

Jetzt gibt es aber auch Dateien, wo vor dem Wort "StapleLocation" auch noch zwei Großbuchstaben stehn:

*OpenUI *FIStapleLocation/Staple:

Das klappt dann mit:

  
elseif (preg_match_all("#\*OpenUI \*[A-Z]{0,2}".$element."(/(.*?):|:) (.*?)\*CloseUI: \*[A-Z]{0,2}".$element."#s", $string1, $contents)){  

Und nochmals welche vor vor "StapleLocation" noch 3 Großbuchstaben gefolgt von 2 Zahlen kommen.
*OpenUI *NUP23StapleLocation/Staple:

Das klappt dann mit: (die Großbuchstaben sind mir bekannt und stehen in $prefix)

  
elseif (preg_match_all("#\*OpenUI \*".$prefix."[0-9]{2,}".$element."(/(.*?):|:)(.*?)\*CloseUI: \*".$prefix."[0-9]{2,}".$element."#s", $string1, $contents)){  

Ich suche nach einer Möglichkeit, wo man einen einzigen Ausdruck für alle Varianten verwenden kann.

Ich dachte ich könnte mit \S* vor der Variablen $element erreichen, dass auch WhiteSpace Zeichen (keinmal oder mehrmals) erlaubt sind.

if (preg_match_all("#\OpenUI\s+\\S*".$element."(/(.*?):|:)\s?(.*?)\CloseUI[^ ]*: \\S*".$element."#s", $string1, $contents)){

So aber wird mir bei;
*OpenUI *StapleLocation/Staple:

sowohl "Staple" als auch "StapleLocation" gefunden obwohl ja nur das Letztere richtig wäre.

Hat jemand eine Idee für einen Ausdruck?

vielen Dank und viele Grüße
hawk