正規表現を使用して 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
しかし、上記の入力を考えると、+? キャプチャ グループ:
**Match 1**
field def:456
name def
value 456
**Match 2**
field ghi:789
name ghi
value 789
最初の一致では、abc:123 と def:456 の 2 つのフィールドが一致すると予想していました...
これは初心者の間違いだと確信しています(正規表現に関しては、私は永遠に初心者であるように思われるため...)-しかし、正しい方向に私を向けることができますか?
ありがとう!