我有一个包含以下日期范围格式变体的字符串。我需要使用单个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}
答案 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}
现场演示
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);
}
}