我正在尝试使用正则表达式解析 iCalendar (RFC2445) 输入。
这是输入的 [简化] 示例:
BEGIN:VEVENT
abc:123
def:456
END:VEVENT
BEGIN:VEVENT
ghi:789
END:VEVENT
我想得到一个匹配数组:“外部”匹配是每个 VEVENT 块,内部匹配是每个字段:值对。
我试过这个的变种:
BEGIN:VEVENT\n((?<field>(?<name>\S+):\s*(?<value>\S+)\n)+?)END:VEVENT
但是考虑到上面的输入,结果似乎每个匹配的 VEVENT 只有一个字段,尽管 +? 在捕获组上:
**Match 1**
field def:456
name def
value 456
**Match 2**
field ghi:789
name ghi
value 789
在第一场比赛中,我会期待两个字段: abc:123 和 def:456 匹配......
我确定这是一个新手错误(因为在正则表达式方面我似乎永远是新手......) - 但也许你可以指出我正确的方向?
谢谢!