Помогите составить regexp выражение для PHP
В переменной может содержаться: 1 день, 2 дня, 5 дней, 19 дней, 21 день, 1-2 дня, 22-27 дней
Если одно число, то получить его, если два числа, то большее. PS. совсем не могу пока разобраться с регуляркой.
.*\b(\d+)\b.*
Спасибо @teran
Ответы (1 шт):
извлечь второе число можно с помощью выражения
.*\b(\d+)
\b обозначает границу слова. так что этому выражению будет соответствовать произвольная строка, потом разделитель и искомое число.
в целом вы просто можете вычленить из строки все (\d+) и с помощью preg_match_all('/(\d+)/', $str, $matches) получите 1 или 2 совпадения. возьмете последнее совпадение из $matches - array_pop($matches[0]);
на само деле решений может довольно много для этой задачи. Можно например, применить альтернацию сначала поискав пару число-число или просто число
(?:\d+-(\d+))|(\d+)
второе число из первой маски и просто число из второй вернуть в группу захвата.