我有一个爱好项目,目的是通过从小组中的个人日历中请求ics文件来同步多个日历,以安排会议的最佳时间。安排会议的某种懒惰方式:)
但是我由于以下两个原因而无法读取ics文件:
ics文件已经结构化,所以我知道我想从BEGIN:VEVENT
开始并将该文本收集到END:VEVENT
。
我希望每个事件在以后的阶段都可以成为一个类,这样我就可以读取数据并提出要呈现给最终用户的决定。
我尝试了正则表达式:BEGIN:VEVENT(?:[\w\s\:\@\.\;\-\=\ä\å\ö\\\,\/\#]*)END:VEVENT
,但这不是一种非常有效的方法。因为它会收集所有事件,并且不会将它们分为单独的组。
我一直在使用regexer.com来测试我的regex表达。
这是ics文件中的一些文本:
BEGIN:VEVENT
DTSTART:20121220T180000Z
DTEND:20121220T190000Z
DTSTAMP:20190503T064840Z
UID:SomeHash@google.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Name;X-NUM-GUESTS=0:mailto:MailAddress
CREATED:20121212T061002Z
LAST-MODIFIED:20121212T061003Z
LOCATION:ALocation
SEQUENCE:1
STATUS:TENTATIVE
SUMMARY:SomeText
TRANSP:OPAQUE
CATEGORIES:http://schemas.google.com/g/2005#event
END:VEVENT
BEGIN:VEVENT
DTSTART:20121213T143000Z
DTEND:20121213T153000Z
DTSTAMP:20190503T064840Z
UID:SomeHash@google.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Name;X-NUM-GUESTS=0:mailto:MailAddress
CREATED:20121212T061146Z
LAST-MODIFIED:20121212T061146Z
LOCATION:ALocation
SEQUENCE:1
STATUS:TENTATIVE
SUMMARY:SomeText
TRANSP:OPAQUE
CATEGORIES:http://schemas.google.com/g/2005#event
END:VEVENT
是使用字符串文本获取匹配项数组,以便我可以将其拆分成更多的内容并创建类。
因为这是一个业余项目,所以我想挑战一下,不要使用插件或帮助库。但是,如果我能看到它们如何解决问题,那么感谢与这些链接。
答案 0 :(得分:0)
尝试使用 BEGIN:VEVENT([\ s \ S] *?)END:VEVENT
我将Regex101.com用于正则表达式,希望对您有帮助
答案 1 :(得分:0)
正则表达式通常非常适合提取文本。但是在这种简单情况下,您可以尝试执行以下操作:
ICacheClient