文本编辑器(regex?)解释日期字符串的技巧

文本编辑器(regex?)解释日期字符串的技巧,regex,string,date,editor,Regex,String,Date,Editor,拿着这个:20120204235900 这表示:2012 02 04 23:59:00或2012年2月4日23:59:00 我有几千个这样的,我想把它们改成这个:例如,2012/02/04 23:59:00 我知道我可以做一个Java程序,但必须有一个简单的方法来做一些文本编辑器 有什么想法吗 提前感谢。在记事本++中,您可以: ([12]\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d) 我在开始时检查1或2以进行一点日期验证,如果不需要,则只需将[12]替换为\d

拿着这个:20120204235900

这表示:2012 02 04 23:59:00或2012年2月4日23:59:00

我有几千个这样的,我想把它们改成这个:例如,2012/02/04 23:59:00

我知道我可以做一个Java程序,但必须有一个简单的方法来做一些文本编辑器

有什么想法吗


提前感谢。

在记事本++中,您可以:

([12]\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)
我在开始时检查1或2以进行一点日期验证,如果不需要,则只需将
[12]
替换为
\d

并替换为

\1/\2/\3 \4:\5:\6
将“20120204235900”转换为“2012 02 04 23:59:00”

诀窍是使用
\1
(称为反向引用)访问括号中的子匹配。因此,组1是
\2
中第一对括号的内容,第二对括号的匹配

这样,对子匹配进行重新排序就没有问题了,但要将
02
替换为
二月
则需要更复杂的逻辑。我认为这在编辑中是不可能的

注意:这只是测试以1或2开头的14位数字,因此不会验证数字序列是否为有效的日期/时间

我会使用记事本++

只需像这样使用regex replace:

([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])
并将其替换为

\1/\2/\3 \4:\5:\6
您可以使用sed(流编辑器),它通常在任何*nix系统上都可用。这一班轮应该可以:

sed -e "s/^\([0-9]\{4\}\)\([0-1][0-9]\)\([0-3][0-9]\)\([0-2][0-9]\)\([0-6][0-9]\)\([0-6][0-9]\)/\1\/\2\/\3 \4:\5:\6/g" <filename>
sed-e“s/^\([0-9]\{4\\\)\([0-1][0-9]\([0-3][0-9]\)\([0-2][0-9]\([0-6][0-9]\)/\1\/\2\/\3\4:\5:\6/g”

太好了,谢谢。从未听说过记事本++。不幸的是,我没有足够的声望点数来投票。不客气,你没有足够的声望来投票,但你可以。