0

イベントのカテゴリに応じて個々の新しい .ics ファイルを作成したい .ics ファイルが 1 つあります (egroupware で 1 つのカテゴリのイベントのみをエクスポートすることはできません。カテゴリに応じて新しいカレンダーを作成したいと考えています)。私の意図したアプローチは、1 つのカテゴリ以外のすべてのイベントを繰り返し削除してから、EditPad Lite 7 (Windows) を使用してファイルを保存することです。

私は正規表現を正しくするのに苦労しています。.+? それでも貪欲すぎて、文字列を否定する (たとえば、1 つのカテゴリからイベント以外をすべて削除する)こともできません。

サンプル

    BEGIN:VEVENT
    DESCRIPTION:Event 2
    END:VEVENT
    BEGIN:VEVENT
    DESCRIPTION:Event 3
    CATEGORIES:Sports
    END:VEVENT
    BEGIN:VEVENT
    DESCRIPTION:Event 4
    END:VEVENT

正規表現BEGIN:VEVENT.+?CATEGORIES:Sports.+?END:VEVENTはスポーツ イベントのみに一致する必要がありますが、カテゴリBEGINの最初から最初まですべてをキャッチENDします。

編集: 否定も機能しません: BEGIN:VEVENT.+?((?!CATEGORIES:Sports).).+?END:VEVENT.

私は何が欠けていますか?どんな指針も高く評価されます。

4

2 に答える 2

0

わかった。解決しました。ここで、ics ファイルの分割に使用できるものを見つけました。ファイル名に要約ではなくカテゴリを使用するように微調整し、カテゴリに従って個別に生成されたファイルをマージしました。すべてのファイルに通常の ics ヘッダーとフッターを追加すると、ほら、個々のカレンダー ファイルができました。

于 2013-02-16T12:09:46.973 に答える
0

正規表現は改行を気にしないため、改行は削除または無視されると思います。

CATEGORIES の後の試合の修正しかありません

BEGIN:VEVENT.+?CATEGORIES:Sports.*?END:VEVENT
                                 ^
                               Zero or more

正規表現の最初の部分は良さそうですが、EditPad の正規表現エンジンがあまり良くないのかもしれません。別のエディターまたはスクリプト言語 (Eclipse、perl、Notepad+、Notepad2 など) で試してください。

入力を分割して、一致する Sports イベントを grep することができます

@sportevents = grep /Sports/, split /END:VEVENT/, $input
map $_.="END:VEVENT", @sportevents

これは perl でした。おそらく、EditPad からスクリプトを起動して実行できます。
2 行目は、分割中に削除された END:VEVENT を復元するだけです。

于 2013-02-13T16:18:47.780 に答える