2015-03-30 2 views
1

Я пытаюсь найти PHP preg_match, который может соответствовать:Php preg_match вопрос не работает

"2-20 до 2-25"

из этого текста:

пользовательские уровни 2-20 до 2-25 не готов

Я попытался

preg_match("/([0-9]+) to ([0-9]+)/", $vars[1] , $matchesto); 

но результат:

"20 to 2"

Любая помощь оценивается.

ответ

0

Thats потому, что [0-9]+ соответствует one or more numbers, но не соответствует дефису (-).

Попробуйте это:

$pattern = '~([0-9]+-[0-9]+) to ([0-9]+-[0-9]+)~Ui'; 
preg_match($pattern, $vars[1] , $matchesto); 
0

Вы можете использовать "\ D", чтобы соответствовать цифры:

<?php 
$str = 'user levels 2-20 to 2-25 not ready'; 
$matches = array(); 
preg_match('/(\d+-\d+) to (\d+-\d+)/', $str, $matches); 
var_dump($matches); 

Выход:

array(3) { 
    [0]=> 
    string(12) "2-20 to 2-25" 
    [1]=> 
    string(4) "2-20" 
    [2]=> 
    string(4) "2-25" 
} 
1

Ваш образец почти правильно; просто включить тир и настроить группу захвата:

([-0-9]+ to [-0-9]+) 

Пример:

https://regex101.com/r/eD6lQ2/1

Смежные вопросы