2011-01-15 10 views
0

Unten ist eine Regex, die in .net funktioniert, aber geben Sie mir Fehler, wenn ich es in PHP verwende.Warum funktioniert dieser reguläre Ausdruck in PHP nicht, funktioniert aber in .net?

(?<=")([^"]+,[^"]+)?(?=") 

Was soll diese Regex zurückgeben?

Eingang: 1,"x1",43,"tr","y,7"

Es kehrt mich "y,7" in diesem Fall. Im Allgemeinen gibt es einen Teil zwischen " und " zurück, wenn es ein Komma dazwischen hat.

Wenn ich versuche, dies in PHP zu verwenden, bekomme ich folgende Fehlermeldung:

Unknown modifier '('

Bitte helfen.

Antwort

2
~(?<=")([^"]+,[^"]+)?(?=")~ 

für PHP (preg_* Funktionen) müssen Sie Trennzeichen um die regex iteself angeben. Es kann sein , /, #, ~ usw.

+0

Kann sogar sein '(...)'. Deshalb gibt PHP diesen Fehler aus, er denkt, der Ausdruck sei '(? <=") 'Und das folgende' ('ist kein gültiger Modifikator. –

+0

Array [ [0] => 1," x1 ", 43 "[1] => " "tr" ) Array ( [0] => 1" x1" , 43, "tr"," [1] => " ) Ich brauche "y, 7" im Ergebnis. – Mihir

+0

@Mihir: debug es, dann. Schreiben Sie es von Grund auf neu. – zerkms

Verwandte Themen