regex — PHP: извлечение чисел со страницы

Я извлекаю данные со страницы с несколькими пользовательскими рейтингами, что означает, что синтаксис немного небрежный.
Текст выглядит примерно так:

<span date="12/10/2014">4.957/10</span>
<span date="12/10/2014">11/10</span>
<span date="12/10/2014">5 / 10</span>
<span date="12/10/2014">i say: 9 /10</span>
<span date="12/10/2014">10/ 10</span>
<span date="12/10/2014">0.1/10, no more</span>

как бы вы пошли за получением этих рейтингов?
рейтинги будут идти от 0 до 1000000 и иметь максимум 3 знака после запятой.

Полученный массив из вышеперечисленного должен быть:

4.957
11
5
9
10
0.1

Так что в основном правила должны идти так:
* Сопоставьте любое число с «/ 10» позади него.
* За номером может следовать точка и до 3 дополнительных цифр.
* Между / и рейтингом может быть пробел, также между / и 10.
* Не должно быть другого / после / 10.

-3

Решение

Если бы я был тобой, я бы просто схватил число, а затем за пределами регулярного выражения выяснил, укладывается ли оно в твои пределы:

'(\d+(?:\.\d{1,3})?)\s*/\s*10(?![^<]*/)'

Обновить

Я понял, что мой сбой, когда было больше трех знаков после запятой (получил неправильный номер), так что вот лучше:

'(?<![\d.])(\d+(?:\.\d{1,3})?)\s*/\s*10(?![^<]*/)'
1

Другие решения

Попробуйте это регулярное выражение:

[\d]+\.?[\d]*|[\d]*\.?[\d]+

Что он на самом деле делает, так это сопоставляет первое вхождение числа в строке, которое будет выглядеть как 10 или 0,10 или .10 или 10. (части числа могут содержать любую цифру).

Для лучшего объяснения того, что он видит: https://www.regex101.com/

-1

По вопросам рекламы [email protected]