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