Entwickler-Ecke
Programmiersprachen (Server) - Reguläre Ausdrücke: Backreferenzen funktionieren nicht
Heiko - So 14.12.08 16:20
Titel: Reguläre Ausdrücke: Backreferenzen funktionieren nicht
Hallo,
ich habe momentan das Problem, dass bei mir die Backreferenzen in PHP nicht laufen.
Regulärer Ausdruck:
Quelltext
1:
| (\w+)((?:\s*\w+\s*=\s*(?:(["']?)\w+\3))*) |
Testcode, auf dem der reguläre Ausdruck funktionieren müsste:
Quelltext
1:
| test name = bla df = "asd" ds = "sd" |
Wenn ich das \3 weglasse, findet er immerhin einen Teil. Sprich irgendwo hat er ein Problem mit dem \3. Hat einer eine Idee, wieso das unter php nicht läuft (RegexBuddy aber das richtig matcht)?
Grüße
Heiko
Heiko - So 14.12.08 19:47
Mhm, da leider schon, aber mein php nicht :(.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| <?php
echo "<pre>"; preg_match("/(\w+)((?:\s*\w+\s*=\s*(?:([\"']?)\w+\3))*)/", "{{test name = bla df = \"asd\" ds = \"sd\"}} ", $matches);
print_r($matches); echo "<pre>"; ?> |
ergibt:
Quelltext
1: 2: 3: 4: 5: 6:
| Array ( [0] => test [1] => test [2] => ) |
statt wie erwartet (und von supercrumbly angezeigt)
Quelltext
1: 2: 3: 4: 5: 6:
| Array ( [0] => test name = bla df = "asd" ds = "sd" [1] => test [2] => name = bla df = "asd" ds = "sd" ) |
Wie sieht es bei dir aus, wenn du es lokal ausführst?
Kha - So 14.12.08 20:34
Heiko hat folgendes geschrieben : |
Wie sieht es bei dir aus, wenn du es lokal ausführst? |
Mein Tester (.Net) akzeptiert es auch.
Heiko - Mo 15.12.08 11:26
Mhm - ich habs gerade auf nem anderem PHP-Server getestet und auch da funktioniert es nicht :(.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!