我正在提醒应用程序,我希望能够支持iCalender导入。这就是为什么我想能够提取事件。这是一个事件的iCalender事件的基本格式:正则表达式匹配2个重复值之间的所有内容
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
完成比赛。
因此,在列表中的其他事件中,尝试匹配它们的一些事件包括许多其他事件。有没有一种方法可以匹配DTSTART;VALUE=DATE:
,只有前一个最近的BEGIN:VEVENT
和以下END:VEVENT
才能提取当天的单个事件?
好吧,这里是 - https://regex101.com/r/oE6bB5/2 –
不,我不能弄明白,我在正则表达式上很缺乏经验,哇,非常感谢! – danbeggan