Как получить часы и минуты из строки данных? - PullRequest
0 голосов
/ 24 марта 2020

Я хочу написать регулярное выражение для получения 06:00, а в 06:59 получается строка:

06:00 Pizza Hut24 06:59

Я не могу построить правильное регулярное выражение! Пока это мое регулярное выражение, но оно рассматривает 24 в Hut24 как часть результата, но не должно:

(?P<start_time>\d{2}:\d{2})\s+([a-zA-Z\s]*)(?P<end_time>\d{2}:\d{2})?

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Мне удалось сформулировать ответ (хотя ваш вопрос был сформулирован неправильно, и вы не упомянули в своем вопросе, что вы хотите захватить Pizza Hut24) для вас:

(\d{2}:\d{2})\s+([\w\d\s]+)\s+(\d{2}:\d{2})

Выше регулярное выражение будет захватывать 06:00 Pizza Hut24 06:59 отдельно.


Проверено на следующих строках:

06:00 Pizza Hut24 06:59
06:00 Pizza Hut24 06:59
16:00  Pizza Hut24    06:59
06:00 Pizza Hut11114 06:59
0 голосов
/ 24 марта 2020

Если вы хотите найти все вхождения, используйте preg_match_all:

$string = '06:00 Pizza Hut24 06:59';
preg_match_all('/\d{2}:\d{2}/', $string, $found);
var_dump($found);

Это даст

array(1) {
    [0] => array(2) {
        [0]=> string(5) "06:00"
        [1]=> string(5) "06:59"
    }
} 

Итак, вы хорошо начали, просто нужно было использовать правильную функцию.

...