Problem mit Regulären Ausdruck
Problem mit Regulären Ausdruck
am 02.09.2006 00:30:32 von Rainer Hinz
Moin,
sorry, sehe den Wald vor lauter Bäumen nicht:
Habe ein SQL-Query und da möchte ich was raus haben
INSERT INTO tabelle SET col1=3D'xuyd',col2=3DNOW(),col3=3D12 usw.
Nun brauche ich ein regulären Ausdruck, der mit nach übergabe des=20
Spaltennamens alles rausgibt, was vorm hinterm =3D steht bis zum Komma,=20
sofern es eins gibt.
Also: ich gebe an:
col1 und möchte haben col1=3D'xuyd'
col2 und möchte haben col2=3DNOW()
col3 und möchte haben col3=3D12
Mein Test war mit
preg_match("/(col1=3D\'?.+\'?),?/", $sqlquery, $hits)
echo hits[1];
nicht erfolgreich, weil der . Platzhalter natürlich bis ans Ende des=20
Strings geht.
Gibt es sowas wie . außer \' ?
Danke für Hilfe
Gruß
Anni
Re: Problem mit Regulären Ausdruck
am 02.09.2006 00:56:44 von Johannes Vogel
Hi Anni
Anni Schmidt wrote:
> Habe ein SQL-Query und da möchte ich was raus haben
> INSERT INTO tabelle SET col1='xuyd',col2=NOW(),col3=12 usw.
> Nun brauche ich ein regulären Ausdruck, der mit nach übergabe des
> Spaltennamens alles rausgibt, was vorm hinterm = steht bis zum Komma,
> sofern es eins gibt.
> Also: ich gebe an:
> col1 und möchte haben col1='xuyd'
> col2 und möchte haben col2=NOW()
> col3 und möchte haben col3=12
> Mein Test war mit
> preg_match("/(col1=\'?.+\'?),?/", $sqlquery, $hits)
> echo hits[1];
> nicht erfolgreich, weil der . Platzhalter natürlich bis ans Ende des
> Strings geht.
/(col1=.*?)[ ,]/
Problem: Wenn im String drin ein Leerzeichen steht.
> Gibt es sowas wie . außer \' ?
Auch das gäbe es: [^']*
Für dich massgebend ist jedoch .*?, hier das Fragezeichen. Dieses gibt
an, dass nicht die grösstmögliche Menge an Zeichen, sondern die
kleinstmögliche gefunden wird. Näheres findest du im Manual.
HTH, Johannes
Re: Problem mit Regulären Ausdruck
am 02.09.2006 01:05:39 von Niels Braczek
Anni Schmidt schrieb:
> Mein Test war mit
> preg_match("/(col1=3D\'?.+\'?),?/", $sqlquery, $hits)
> echo hits[1];
>=20
> nicht erfolgreich, weil der . Platzhalter natürlich bis ans Ende des =
> Strings geht.
Du suchst nach 'ungreedy', also '.+?' statt '.+'.
Dein Ausdruck berücksichtigt allerdings vieles noch nicht. Er matcht zB=
col1=3D23',
aber nicht
col1=3D'',
Sieh dir das mal an (ungetestet):
$col =3D 'col1';
preg_match( "~(col1=3D(')?(.*?)(?
;
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Problem mit Regulären Ausdruck
am 02.09.2006 08:34:53 von Rainer Hinz
Niels Braczek wrote:
> Du suchst nach 'ungreedy', also '.+?' statt '.+'.
Anders formuliert: Du brauchst... hätte ich den Begriff gewußt, tja, =
dann. RegExp sind doch immer wieder ein Abenteuer
Danke euch beiden...
Gruß
Anni