web-dev-qa-db-ja.com

notepad ++で並べ替えた日付形式を検索して置換する

MySQLデータベースに追加する数千行のファイルがあります。行にはdd-mm-yyyy形式の日付値がありますが、yyyy-mm-dd形式である必要があります。

たとえば、'11-04-2010',はすべての行で'2010-04-11',になる必要があります。

Notepad ++または別のテキストエディターでこれを行う簡単な方法はありますか?

24
Chris J

テキストパッドでこれを行うことができます:

検索:([0-9]+)-+([0-9]+)-+([0-9]+)

交換:\ 3-\2-\1

39
crnlx

間違ったフォーマットのみを並べ替えるようにするには(データベースのマージでフォーマットが混在している場合)、これを使用します:

([0-9]{2})-+([0-9]{2})-+([0-9]{4})

これは(4桁、ダッシュ、2桁、ダッシュ、2桁)を検索します。

Notepad ++のような正規表現対応のエディターで、これを次のように置き換えます。

\3-\2-\1

Libre officeのようなツールでは、これを次のように置き換える必要があります。

$3-$2-$1 

編集:これは一般的な問題のように思われるため、ブログポストを作成しました: http://bytethinker.com/blog/correct-date-format-with-notepad-and-regex

8

Notepad ++を使用して、テキストファイルの数行でmm/dd/yyyyをyyyy/mm/ddに変更しました。スクリプトは次のファイルのマクロとして保存されました。

検索:([0-9] {2})/ +([0-9] {2})/ +([0-9] {4})置換:\ 3/\ 1/\ 2

2
Wilf Morrison

ISO日付形式 "2010-11-30T00:00:00.266Z"のような値で機能する別の堅牢なパターン

ISO日付表現のさまざまな要素のグループをキャプチャする

"(\ d {4})-(\ d {1,2})-(\ d {1,2})T([0-2]\d):([0-5]\d):( [0-5]\d)(?:。\ d +)?Z?\ s? "

合計6つのグループがこのパターンでキャプチャされます。最後の「?:」を含む7番目のグループは非キャプチャです。つまり、グループによって記録された値を保持せず、単にそれらを無視します。

取得した6つのグループには、\ 1\2\3 ...から\ 6までの位置に基づいた番号があります。

その日付をデータベースがサポートする日付形式に変更するための置換パターン。主に- "11/30/2010 00:00:00 AM"などのOracle値で使用されます。

「\ 2/\ 3/\ 1\4:\ 5:\ 6 AM」

Notepad ++ Good Luckでうまく動作します!

0
nitinr708