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


Kha - So 14.12.08 19:18

Hier [http://www.supercrumbly.com/assets/html/phpregextester] funktionierts :nixweiss: .


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

/**
 *
 *
 * @version $Id$
 * @copyright 2008
 */


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

user profile iconHeiko hat folgendes geschrieben Zum zitierten Posting springen:
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 :(.


Jungschar - So 21.12.08 16:47

hiho

Frag mal im Forum [http://www.modrewrite.de/foren/] von modrewrite.de [http://www.modrewrite.de].
Die kennen, Lösungen für so ziemlich jedes Problem mit regulären Ausdrücken. ;)

Gruess Jungschar