从ical文件中提取8个字符的整数字符串

时间:2015-02-06 12:31:44

标签: php icalendar rfc5545

获取8个整数的所有序列的代码工作正常:

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

但是我只对比赛从20开始感兴趣。

我知道我必须在某处添加^20,但我已多次尝试但没有成功。我已经查看了许多正则表达式教程,但似乎没有解释如何进行2次单独搜索。

我实际上是在尝试解析ICAL文件以提取日期。如果8位整数以20开头,那几乎肯定是一个日期。

例如:DTSTART:20150112T120000Z

3 个答案:

答案 0 :(得分:0)

这个解决方案怎么样:

/(20)\d{6}/

答案 1 :(得分:0)

这可能会找到你要找的东西:

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

如果一个组以20和一个8位数字开头,它会捕获一个正面的预测。

答案 2 :(得分:0)

答案很大程度上取决于你想要达到的目标。是否要从icalendar文件中提取所有日期和任何日期。如果是这样,您可能会错过生日日期,因为他们的年份最有可能以19xx开头。

同时匹配任何日期都会产生很多不受欢迎的日期,例如UNTILTRIGGERDTEND,......

假设您的示例要提取事件开始日期,您可以尝试:

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

要记住:关注DTSTART可以是时区定义,例如TZID=America/New_York和/或类型定义DATEDATE-TIME(请参阅RFC5545 DATE-TIME