B@rmaley.e><e,
заменил на
preg_match_all("/(?<=<\?=\$this->lang\[)\d*(?=\])/i", $s, $matches);
результат остался прежним, не находит. Где я еще мог закосячиться?
Если имеет значение, длина строки $s сопоставима с длиной html кода страницы, в данный момент порядка 15000 символов.
UPD:
Работает данный вариант:
preg_match_all("/(?<=this->lang\[)\d*(?=\])/i", $s, $matches)