http://docs.php.net/manual/ru/regexp.reference.php
Цитата мануал:
Утверждения касательно предшествующего текста начинаются с (?<= для положительных утверждений и (?<! для отрицающих. Например, (?<!foo)bar не найдёт вхождения "bar", которым не предшествует "foo". Сами утверждения 'назад' ограничены так, чтобы все подстроки, которым они соответствуют, имели фиксированную длину. Но, в случае, если используются несколько альтернатив, они не обязаны иметь одинаковую длину. Таким образом шаблон (?<=bullock|donkey) корректен, но (?<!dogs?|cats?) вызовет ошибку во время компиляции.
|
т.е. квантификаторы повторения не прокатят ибо длина будет произвольная, и вообще вы зашли в дебри, откуда дорога только на дурку...
PHP код:
preg_match
(
'{\<td[^\>]*\>\s*USD\s*\<\/td\>\s*\<td[^\>]*\>\s*[\d\,]+\s*\<\/td\>\s*\<td[^\>]*\>\s*([\d\,]+)\s*\<\/td\>}i',
$data,
$matches
);
// понатыкал \s (возможных пробелов) и [^\>]* вероятных атрибутов у таблицы
// это делается, чтобы меньше регулярку исправлять в будущем...
echo $matches[1]; //тут искомое должно быть
UPD
Если ищется только одно значение, то preg_match...