正则表达式只匹配字符串中出现的n个char

时间:2012-03-22 09:59:46

标签: regex kde4

我有一个像2005:10:29 12:23:53这样的字符串,我希望只用[{1}}

替换前两次出现的:

预期结果-

编辑:

我需要在KDE的2005-10-29 12:23:53工具中使用此正则表达式,我无法编辑/格式化原始krename女巫返回不需要的[exifExif.Image.DateTime]格式,但有一个{{1} }发布处理String

2005:10:29 12:23:53完成工作on rubular,但在KDE中没有:(

我相信还有更多解决方案。

编辑:

Find and Replace甚至可以在KDE上运行

我在阅读

后找到了这个解决方案
(?<=\d{4}):|:(?=\d{2}\s)
Regex tutorial

中的

4 个答案:

答案 0 :(得分:3)

在Ruby中,正如scibuff建议的那样,你最好不要使用Regexps。

require 'date'
date = DateTime.parse("2005:10:29 12:23:53", "%Y:%m:%d %H:%M:%S")
date.strftime("%Y-%m-%d %H:%M:%S")

答案 1 :(得分:1)

JavaScript的:

版本1

str = str.split(' ')[0].replace(/\:/g,'-')+' '+str.split(' ')[1]

第2版

str = str.replace(/(\d{4}):(\d{2}):(\d{2})(.*)/,"$1-$2-$3 $4")

DEMO

答案 2 :(得分:-1)

再一次使用正则表达式来实现更简单,更优雅,更高效的方式

var date = new Date('2005:10:29 12:23:53');

然后相应地格式化date,例如

function formatDate( date ){

    return date.getFullYear() + '-' + ( get.getMonth() + 1 ) + '-' + ... ;

}

答案 3 :(得分:-1)

只需拨打replace()两次:

"2005:10:29 12:23:53".replace(/:/,'-').replace(/:/,'-')