2016-12-29 11 views
-4

一連の行で構成されるドキュメントがあります。各行の中央には、yy.mm.ddという形式のタイムスタンプがあります。 15.12.05メモ帳でタイムスタンプを変更して移動する++

PCRE(Perl互換の正規表現)をNotepad ++で使用するにはどうしたらよいですか?

  1. 各タイムスタンプをその行の中央からその行の終わりに移動します。
  2. 各タイムスタンプの形式をyy.mm.ddからmmm dd, yyyyに変更します。 Dec 05, 2015
+0

さて、あなたはまだ何かを試してみましたか?どのような問題がありましたか? – 4castle

+0

私は成功のために何も試していませんでした。私の試行はすべて失敗しました。私は他のいくつかのトピックを検索しました。しかし、すべての答えは私が必要とするものをしなかった。 –

+0

あなたはどの言語/ツールを使用していますか? – Travis

答えて

1

この質問には3つの部分があります。

  1. 各行からフォーマットのタイムスタンプを抽出する方法。
  2. 上記のタイムスタンプを行の末尾に移動する方法。
  3. タイムスタンプの形式を変更する方法。
  4. タイムスタンプ形式 yy.mm.ddこの正規表現にマッチすることができるタイムスタンプ

    抽出

1:次に、すべてのタイムスタンプは、非単語によって進行し、その後であると仮定することができる場合

\d{2}\.\d{2}\.\d{2} 

この正規表現はさらに良くなります:タイムスタンプを移動する

\b\d{2}\.\d{2}\.\d{2}\b 

2.

find/replaceを使用してタイムスタンプを行末まで移動するには、タイムスタンプと残りの行の内容を別々のグループに一致させる必要があります。あなたは解凍後に別の操作でタイムスタンプをフォーマットし、それらを移動する必要があり、タイムスタンプ

をフォーマット

Find:  ^(?<begin>.*?)(?<timestamp>\b\d{2}\.\d{2}\.\d{2}\b)(?<end>[^$]*)$ 
Replace: \k<begin>\k<end> \k<timestamp> 

3.(以下は、行ごとに1つのタイムスタンプがあると想定します)。これは、毎月1回、タイムスタンプ形式を正しく変換するために、12回の個別の検索/置換操作を実行する必要があるためです。

Find:  (?<year>\d{2})\.01\.(?<day>\d{2})$ 
    Replace: Jan \k<day>, 20\k<year> 

    Find:  (?<year>\d{2})\.02\.(?<day>\d{2})$ 
    Replace: Feb \k<day>, 20\k<year> 

    ... 

    Find:  (?<year>\d{2})\.12\.(?<day>\d{2})$ 
    Replace: Dec \k<day>, 20\k<year> 

これは毎年前提としていますが> = 2000

関連する問題