Найти и заменить с помощью переупорядоченного формата даты в блокноте ++

У меня есть файл с несколькими тысячами строк, которые нужно добавить в базу данных MySQL. Есть значения даты в строках, которые находятся в формате dd-mm-yyyy, но мне нужно, чтобы они находились в формате yyyy-mm-dd.

Например, '11-04-2010', должно быть '2010-04-11', в каждой строке.

Есть ли простой способ сделать это в блокноте ++ или другом текстовом редакторе?

Ответы

Ответ 1

Вы можете сделать это с помощью Textpad:

Найти: ([0-9]+)-+([0-9]+)-+([0-9]+)

Заменить:\3-\2-\1

Ответ 2

Чтобы убедиться, что вы только переупорядочиваете неправильные форматы (в случае, если у вас смешанные форматы от объединения баз данных), используйте это:

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

Это ищет (четыре цифры, тире, две цифры, тире, две цифры).

В редакторе, поддерживающем регулярное выражение, например notepad++, замените его следующим:

\3-\2-\1

В таком инструменте, как libre office, вам нужно заменить его следующим:

$3-$2-$1 

Редактировать: я написал блогпост об этом, поскольку это кажется общей проблемой: http://bytethinker.com/blog/correct-date-format-with-notepad-and-regex

Ответ 3

Использовал Notepad++, чтобы изменить mm/dd/yyyy на yyyy/mm/dd в нескольких строках текстового файла. Скрипт был сохранен как макрос для следующего файла.

Найти: ([0-9] {2})/+ ([0-9] {2})/+ ([0-9] {4}) Заменить:\3/\ 1/\ 2

Ответ 4

Еще один надежный шаблон, который работает со значениями формата даты ISO, такими как "2010-11-30T00: 00: 00.266Z"

Захват групп различных элементов представления даты ISO

"(\ D {4}) - (\ д {1,2}) - (\ д {1,2}) Т ([0-2]\г): ([0-5]\г) :( [0-5]\г) (?:.\d+) Z\s "??

Всего в этом шаблоне фиксируются шесть групп, седьмая группа в конце, содержащая "?:", Не захватывает, то есть не сохраняет значения, записанные группой, просто игнорирует их.

Шесть групп, которые мы захватили, имеют номера, основанные на позициях, таких как \1\2\3... до\6.

Шаблон замены для замены этой даты в поддерживаемый базой данных формат даты, в основном используемый в значениях Oracle, таких как - "30.11.2010 00:00:00 AM"

"\ 2/\ 3/\ 1\4:\5:\6 AM"

Это хорошо работает с Notepa d+ + Удачи!