我正在制作提醒申请,我希望能够支持iCalender导入。这就是我希望能够提取事件的原因。这是iCalender中事件的基本格式:
BEGIN:VEVENT
......
......
END:VEVENT
所有这些事件都在一个文件中,所以我会有一个这样的大清单:
BEGIN:VEVENT
......
......
END:VEVENT
BEGIN:VEVENT
......
......
END:VEVENT
这些事件将包含开始日期和结束日期
BEGIN:VEVENT
......
DTSTART;VALUE=DATE:20160402
DTEND;VALUE=DATE:20160403
......
END:VEVENT
尝试仅提取事件时,格式并不总是相同。开始日期和结束日期可以在其他某些字段之前或之后。
目前我有:
/BEGIN:VEVENT[\s\S]*?DTSTART;VALUE=DATE:20160402[\s\S]*?END:VEVENT/
但是,这并不仅仅与事件本身相匹配,它与BEGIN:VEVENT
的第一个匹配项匹配,在日期之前匹配所有内容,然后在以下END:VEVENT
处完成匹配。< / p>
因此,在某些事件中,试图匹配它们的列表中包括许多其他事件。有没有一种方法可以匹配DTSTART;VALUE=DATE:
,只有前一个最接近BEGIN:VEVENT
和以下END:VEVENT
才能提取当天的单个事件?