Ich bin schon leicht verzweifelt

Wollte heute mal so nebenbei einen kleinen Socket Server und Log Parser für einen Team Fortress 2 Gameserver basteln. Es klappt auch fast alles wunderbar. Leider schluckt mir preg_match die Steam-Id des Spielers, was nich gerade optimal ist. Beispiel:
PHP-Code:
<?php
$mystream = 'L 03/15/2008 - 22:45:37: "tester<317><STEAM_0:1:23456789><Blue>" say "das ist ein test!"';
preg_match("^(.*?) (\d+/\d+/\d+) (.*?) (\d+:\d+:\d+:) (\".*?<\d+><STEAM_\d+:\d+:\d+><.*?>\") (say|say_team) (\".*?\")$^", $mystream, $matches);
print_r($matches);
?>
Und das Array das ist bekomme, sieht dann leider so aus:
PHP-Code:
Array
(
[0] => L 03/15/2008 - 22:45:37: "tester<317>" say "das ist ein test!"
[1] => L
[2] => 03/15/2008
[3] => -
[4] => 22:45:37:
[5] => "tester<317>"
[6] => say
[7] => "das ist ein test!"
)
Leider fehlt bei [5] nach dem Spielernamen und id <STEAM_0:1:23456789><Blue>. Warum hier die Steamid und dann Noch das Team geschluckt wird, ist mir schleierhaft. Warscheinlich fehlt mir da irgendwas
So einfach wie ich mir das gedacht habe, ist es dann im Detail wohl doch nicht. Die Steam-id würde ich schon sehr gerne mit loggen, warum wird alles nach der Spieler-id <317> bis zum Ende der Anführungszeichen " geschluckt?
Hilfe!
Danke
