如何从一串数据中获取小时和分钟?

How to obtain hours and minutes from a string of data?

我想写一个正则表达式来获得 06:00 和 06:59 这是字符串:

06:00 Pizza Hut24 06:59

我无法构建正确的正则表达式!到目前为止,这是我的正则表达式,但它正在考虑 Hut24 中的 24 作为结果的一部分,但它不应该:

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

如果要查找所有出现的地方,请使用 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"
    }
} 

所以你开始得很好,只是必须使用正确的功能。

我能够为你构建一个答案(尽管你的问题没有很好地构建并且你没有在你的问题中提到你想要捕获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