Php 从ical文件中提取8个字符的整数字符串
这段代码可以获得8个整数的所有序列:Php 从ical文件中提取8个字符的整数字符串,php,icalendar,rfc5545,Php,Icalendar,Rfc5545,这段代码可以获得8个整数的所有序列: preg_match_all('/[0-9]{8}/',$string,$match) 然而,我只感兴趣,如果比赛以20开始 我知道我必须在某处添加^20,但我已经尝试了很多次,但都没有成功。我看过很多正则表达式教程,但似乎没有一本解释如何进行两次单独的搜索 我实际上是在试图解析ICAL文件来提取日期。如果8位整数以20开头,几乎可以肯定它是一个日期 例如:DTSTART:20150112T120000Z这个解决方案怎么样: /(20)\d{6}/ 这可能
preg_match_all('/[0-9]{8}/',$string,$match)代码>
然而,我只感兴趣,如果比赛以20开始
我知道我必须在某处添加^20
,但我已经尝试了很多次,但都没有成功。我看过很多正则表达式教程,但似乎没有一本解释如何进行两次单独的搜索
我实际上是在试图解析ICAL文件来提取日期。如果8位整数以20开头,几乎可以肯定它是一个日期
例如:DTSTART:20150112T120000Z
这个解决方案怎么样:
/(20)\d{6}/
这可能会找到您要查找的内容:
(?=20)(\d{8})
如果一个组以20
和一个8位数字开头,那么它会对捕获该组进行正向预测。答案在很大程度上取决于您想要实现的目标。是否要从icalendar文件中提取所有日期。如果是这样的话,你可能会错过生日,因为他们的生日最有可能从19岁开始
此外,匹配任何日期都很可能会产生许多不希望出现的日期,如直到,触发器,数据结束
假设您希望从示例中提取事件开始日期,您可以尝试:
DTSTART[a-zA-Z._%+-/=;]*:(\d){8}[T]?[\d]{6}
请记住:DTSTART
后面可以是时区定义,如TZID=America/NewYork
和/或类型定义DATE
或DATE-TIME
(请参见您是否尝试过(?=20)(\d{8})
?我会使用/(20\d{6})/以获得整个匹配,而不是仅20个。感谢您提供的答案。前两个答案非常适合我的需要,因为我只对未来感兴趣。这是我制作的函数extract_numbers($string){preg_match_all('/(201\d{5})/,$string,$match);//查找一个以201开头,后跟5个整数的数字,返回$match[0];}