Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中从字符串中提取日期_Java_String_Date_String Matching - Fatal编程技术网

在java中从字符串中提取日期

在java中从字符串中提取日期,java,string,date,string-matching,Java,String,Date,String Matching,我有一个字符串,如下所示: String str = "skip=anthing&id='234234432234' and (timestamp le 2017-01-17T05:05:55:358Z and timestamp ge 2017-01-17T08:05:55:358Z)&format=json"; 我想从字符串中提取日期部分,将其放在单引号中,并将其替换回原始字符串 结果字符串应为 String str = "skip=anything&id='234

我有一个字符串,如下所示:

String str = "skip=anthing&id='234234432234' and (timestamp le 2017-01-17T05:05:55:358Z and timestamp ge 2017-01-17T08:05:55:358Z)&format=json";
我想从字符串中提取日期部分,将其放在单引号中,并将其替换回原始字符串

结果字符串应为

String str = "skip=anything&id='234234432234' and (timestamp le '2017-01-17T05:05:55:358Z' and timestamp ge '2017-01-17T08:05:55:358Z')&format=json"

您可以使用以下正则表达式

String input = "skip=anthing&id='234234432234' and (timestamp le 2017-01-17T05:05:55:358Z and timestamp ge 2017-01-17T08:05:55:358Z)&format=json";
String output = input.replaceAll("(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}:\\d{3}Z)", "'$1'");
System.out.println(output); // skip=anthing&id='234234432234' and (timestamp le '2017-01-17T05:05:55:358Z' and timestamp ge '2017-01-17T08:05:55:358Z')&format=json

或者,如果您不喜欢“[0-9]”格式,请将“\d”用于任何数字。因此java正则表达式将是:“(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}:\\d{2}:\\d{3}Z)”@Novy是的,你是对的。我错误地认为\d{n}与以零开始的数字不匹配,例如01。我已经更新了我的答案。谢谢@Novy的帮助。我意识到我在看你的答案时不小心投了反对票(5天后才意识到这一点)。你能编辑它(不需要更改任何内容)以便我可以撤销它吗?@Mar Dev尝试投赞成票,它可能撤销我们的否决票。