Как получить числовые данные с точками внутри строки?

Существует строковая переменная, содержащая числовые данные с точками, например $x = "OP/1.1.2/DIR"; , Позиция числа данных может измениться при любых обстоятельствах по желанию пользователя, изменив ее внутри приложения, а слэш-панель может быть изменена любым другим персонажем; но данные с пунктирными цифрами являются обязательными. Итак, как извлечь данные с пунктиром, здесь 1.1.2 , из строки?

Solutions Collecting From Web of "Как получить числовые данные с точками внутри строки?"

Используйте регулярное выражение :

 (\d+(?:\.\d+)*) 

Сломать:

  • \d+ найдите одну или несколько цифр
  • \. буквальное десятичное число . персонаж
  • \d+ за которым следует одна или несколько цифр
  • (...)* это означает совпадение 0 или более вхождений этого шаблона
  • (?:...) это говорит движку не создавать обратную ссылку для этой группы (в основном мы не используем ссылку, поэтому бессмысленно иметь ее)

Вы не указали много информации о данных, поэтому я сделал следующие предположения:

  • Данные всегда будут содержать по крайней мере одно число
  • Данные могут содержать только число без точки
  • Данные могут содержать многозначные номера
  • Сами цифры могут содержать любое количество пар точек / цифр

Если какое-либо из этих допущений неверно, вам придется изменить регулярное выражение.

Пример использования:

 $x = "OP/1.1.2/DIR"; if (!preg_match('/(\d+(\.\d+)*)/', $x, $matches)) { // Could not find a matching number in the data - handle this appropriately } else { var_dump($matches[1]); // string(5) "1.1.2" }