seth_not@home: strpos(RegEx)

Beitrag lesen

gudn tach!

Ich will in einem String von bis zu 5Mio Zeichen (Messreihen) das erste Vorkommen einer Zeitmessung des Formats hh.mm.ss.ttt finden. Meine RegEx dazu muss glaube ich $Regex="/[0-9]{2}.[0-9]{2}.[0-9]{2}.[0-9]{3}/"; heißen.

ja, oder etwas kuerzer (aber afais nicht schneller):
  /(?:[0-9]{2}.){3}[0-9]{3}/

Aber mit welcher Funktion rufe ich sie auf?

in perl waere das mit "pos" schnell erledigt. in php ist es etwas aufwendiger.

if(preg_match($re, $str, $gefunden, PREG_OFFSET_CAPTURE))  
  echo $gefunden[1];

steht auch im manual: http://www.php.net/manual/en/function.preg-match.php

preg_mach()und ereg() suchen nicht die Position, sondern OB die RegEx vorkommt, bzw. basteln mir unnötigerweise Arrays und das Schlimmste: sie arbeiten den ganzen haystack ab (das dauert!!!) was völlig sinnlos ist, da das erste Vorkommen regelmäßig sehr früh ist.

huch, afaik bricht preg_match nach dem ersten vorkommen ab. bist du sicher, dass es bei nicht so ist?

prost
seth