正则表达式更新日期精度

时间:2016-06-21 23:59:36

标签: java regex

我有一个包含以下日期范围格式变体的字符串。我需要使用单个java正则表达式模式来查找和替换小时精度。日期范围是可变的。你能为我提出一个正则表达式吗?

字符串示例

published_date:{5月31日/ 16.23:41:24 - }

published_date:{5月31日/ 16.23:41:24-06 / 21 / 16.23:41:24}

预期结果

published_date:{5月31日/ 16.23:00:00 - }

published_date:{5月31日/ 16.23:00:00-06 / 21 / 16.23:00:00}

2 个答案:

答案 0 :(得分:2)

描述

此正则表达式将查找类似def median(expr: org.apache.spark.sql.Column): org.apache.spark.sql.Column = { callUDF("percentile", expr, lit(0.5)) } df.select(median($"x")) 的日期/时间戳的子字符串。它会捕获日期和小时部分,并允许您使用05/31/16.23:41:24替换分钟和秒数。

00

替换为: ([0-9]{2}\/[0-9]{2}\/[0-9]{2}\.[0-9]{2}):[0-9]{2}:[0-9]{2}

Regular expression visualization

实施例

现场演示

https://regex101.com/r/qK8bL7/1

示例文字

$1:00:00

替换后

published_date:{05/31/16.23:41:24-?}

published_date:{05/31/16.23:41:24-06/21/16.23:41:24}

解释

published_date:{05/31/16.23:00:00-?}

published_date:{05/31/16.23:00:00-06/21/16.23:00:00}

答案 1 :(得分:0)

试试这个。 “:[0-9] +:[0-9] +”。

公共类正则表达式{

public static void main(String ar[]){
    String st = "05/31/16.23:41:24-06/21/16.23:41:24";

    st = st.replaceAll(":[0-9]+:[0-9]+", ":00:00");
    System.out.println(st);

    st = "05/31/16.23:41:24-?";

    st = st.replaceAll(":[0-9]+:[0-9]+", ":00:00");
    System.out.println(st);

}

}