Это моя тестовая строка / фраза / текст …
8:58 вечера UberX 32m 0s 13,87
Продолжительность может быть днем, часами, минутами и секундами. Я, наверное, никогда не увижу дни, но часы возможны.
(\d+)m.(\d+)s
Которые в этом случае дают мне 32 и 0 в выражении php preg_match.
Теперь я попытался поставить (\ d +) h ?. перед приведенным выше регулярным выражением, добавив 2 часа в мою тестовую строку, и я сломал ее.
Попытка выучить регулярные выражения по крупицам.
Я благодарен за любую помощь, оказанную мне на пути!
Спасибо!
/(\d+(?=d\W))|(\d+(?=h\W))|(\d+(?=m\W))|(\d+(?=s\W))/
При этом используется положительный прогноз для сопоставления только цифр, за которыми сразу следуют d, h, m или s
? применяется к токену, непосредственно предшествующему ему. В вашем примере это делает h необязательным, но цифры по-прежнему обязательны. Вы можете сделать эту работу, заключив всю часть, которую вы используете, чтобы сделать ее необязательной в группу без захвата: (?:(\d+)h)?