Что не так в регулярном выражении?

Почему не работает регулярка?

Elapsed\sTime:\D+(.+?)<\/font>[\n]*.Last\sCalled\sNumber:\D+(\d{5,})@gw0<\/font>\D+(\d{5,})<\/font>

Elapsed Time:</td><td><font color="darkblue">16 days and 12:42:31</font><>
<>
<><>
<>
<>7gt757tLast Called Number:</td><td>
<font color="darkblue">67678799989@gw0</font>
</td><td>Last Caller Number:</td>
<td><font color="darkblue">876868856454</font>

Между </font> и Last Called Number: может быть любой текст и любое количество переносов строки (/n). Ожидаемый результат:

16 days and 12:42:31
67678799989
876868856454

Ответы (1 шт):

Автор решения: Zombotron

Если реализовать через замену, что-то такое должно быть:

^.*?<font.*?>(.*?)<\/font>(.|\r|\n)*?<font.*?>(.*?)\@.*?<\/font>(.|\r|\n)*?<font.*?>(.*?)<\/font>$

в первых, третьих и пятых скобках нужные данные.

Псевдокодом так:

string txt = '
Elapsed Time:</td><td><font color="darkblue">16 days and 12:42:31</font><>
<>
<><>
<>
<>7gt757tLast Called Number:</td><td>
<font color="darkblue">67678799989@gw0</font>
</td><td>Last Caller Number:</td>
<td><font color="darkblue">876868856454</font>';

print regRepace(/^.*?<font.*?>(.*?)<\/font>(.|\r|\n)*?<font.*?>(.*?)\@.*?<\/font>(.|\r|\n)*?<font.*?>(.*?)<\/font>$/, \1\r\n\3\r\n\5);

введите сюда описание изображения

→ Ссылка