简体   繁体   English

我如何使用Java正则表达式获取日期之间的内容

[英]How can i get content between dates using java regular expressions

Below code did not get me the content between dates.can you please help me. 下面的代码没有为我提供日期之间的内容。请您帮我。

String res="05/22/2014 03:22:39.288 ffff gggg kkkkkk lllllll ssss 05/22/2014 03:22:39.288 oooooo ppppp qqqq rrrrrr sss 05/22/2014 03:22:39.378 mmmmmm nnn oooo ";   

String regEx="((0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d).*([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].[\\d]*)(.*?)((0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d).*([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].[\\d]*)?";

Matcher matcher = Pattern.compile(regEx).matcher(res);

while(matcher.find())
{
  String group = matcher.group();
  System.out.println(group);
}

Even i tried below using string split with regular expression in java but it gives only one result: 即使我在Java中使用正则表达式在下面使用字符串拆分进行了尝试,但它仅给出一个结果:

String regEx="((0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d).*([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].([\\d][^\\s]+)?)";
        String[] split = res.split(regEx);

You can use this regex to capture your text: 您可以使用此正则表达式捕获文本:

(?<=\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}\.\d{3} )(.*?)(?=(?: \d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}\.\d{3}|$))

And grab your text in group #1 ie 并在第1组中抓取您的文本,即

matcher.group(1);

Working Demo 工作演示

The reason you only get one result in the split is that the * operator is greedy in a regex. 在拆分中只得到一个结果的原因是*运算符在正则表达式中是贪婪的。 Take a read of this, it's good stuff: http://www.regular-expressions.info/repeat.html 阅读一下,这是好东西: http : //www.regular-expressions.info/repeat.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM