Regex Fehler

Divi

Erfahrenes Mitglied
Hey Leute ... ich bin total am verzweifeln ...

Das sind die Debugs von drei Variablen:


Code:
/(?:\[234234 active\]\n)(.*)(?:\n\[\/234234 active\])/


[234234 active]
yes
[/234234 active]


Array
(
)

Kann mir einer erklären, warum der RegEx oben nicht auf den Inhalt aus der Textdatei trifft? Habs schon mit den Modifiern s und u versucht - aber beides klappt net.... ;(
 
PHP:
$pattern = '~(?:\[234234 active\])(?:\r|\n|\r\n)(.*)(?:\r|\n|\r\n)(?:\[/234234 active\])~i'; // Nachtrag funktionierende Version
Du musst die eckigen Klammern ecapen, da sie bei regulären Ausdrücken eine spezielle Funktion übernehmen. Außerdem weiß ich nicht, was diese beiden n da gesucht haben :). Die eckigen Klammern stehen für Zeichenklassen, so matcht [a-z0-9] alle Kleinbuchstaben und Ziffern. Deswegen escapen!
 
Zuletzt bearbeitet:
Ach mist ... der hat meinen Regex escaped ... ist mir garnicht aufgefallen ... Also:

Die eckigen Klammern sind escaped und die beiden "n" sind newlines ... Also Zeilenumbrüche ... nur verschwinden hier meine Slashes...
 
Müssen die Newlines denn mit rein? Ohne die klappts bei mir hervorragend ;) Ich probier mal weiter...

Nachtrag
PHP:
$pattern = '~(?:\[234234 active\])(?:\r|\n|\r\n)(.*)(?:\r|\n|\r\n)(?:\[/234234 active\])~i';
Bitteschön...

Nachtrag Nr.2
Um das nochmal näher zu erläutern. Ich hab mich dunkel daran erinnert, dass auf den unterschiedlichen Systemen die Zeilenumbrüche verschieden definiert sind, daher die Abfrage:
PHP:
$newline = '(?:\r|\n|\r\n)';
Wenn ich grad Müll erzählt hab, dann verbessert mich :) Auf jeden Fall funktioniert es ;)
 
Zuletzt bearbeitet:
Mein Vorschlag:
PHP:
'~(?:\[\d+\s+active\]\s*)(.*?)(?:\s*\[/\d+\s+active\])~is'

oder anderer Weg:
PHP:
'~\[(\d+)\s+(active)\]\s*(.*?)\s*\[/\1\s+\2\]~is'
 
Zuletzt bearbeitet von einem Moderator:
Beim ersten wird aber auch
Code:
[1234 active]Hallo[/7713 active]
gematched, oder nicht?
Und ich habs so verstanden, dass da Newlines hinter den [] kommen müssen, deine Pattern matchen auch, wenn sie in einer Zeile stehen...
 
Zurück