Извлечение 8-символьной целочисленной строки из файла ical

Этот код, чтобы получить все последовательности из 8 целых чисел работает нормально:

preg_match_all('/[0-9]{8}/', $string, $match);

Однако мне интересно только, если матч начнется с 20.

Я знаю, что должен добавить ^20 где-то, но я пытался много раз безуспешно. Я посмотрел много уроков по регулярным выражениям, но ни один из них не объясняет, как выполнить 2 отдельных поиска.

Я на самом деле пытаюсь разобрать файлы ICAL, чтобы извлечь даты. Если 8-значное целое число начинается с 20, это почти наверняка дата.

Например: DTSTART:20150112T120000Z

0

Решение

Как насчет этого решения:

/(20)\d{6}/
0

Другие решения

Это, вероятно, найдет то, что вы ищете:

(?=20)(\d{8})

Это делает позитивный взгляд, чтобы захватить группу, если она начинается с 20 вместе с 8-значным числом.

0

Ответ сильно зависит от того, чего вы хотите достичь. Вы хотите извлечь все и любые даты из файла icalendar. Если это так, вы можете пропустить даты рождения, так как их год, скорее всего, начинается с 19xx.

Также сопоставление с любыми датами, скорее всего, приведет ко многим нежелательным UNTIL, TRIGGER, DTEND

Предполагая, что из вашего примера вы хотите извлечь даты начала событий, вы можете попробовать:

DTSTART[a-zA-Z._%+-/=;]*:(\d){8}[T]?[\d]{6}

Следует иметь в виду: следующее DTSTART может быть определение часового пояса, как TZID=America/New_York и / или определение типа DATE или же DATE-TIME (увидеть RFC5545 ДАТА-ВРЕМЯ

0
По вопросам рекламы [email protected]