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

标签 java regex

下面的代码没有获取日期之间的内容。您可以帮助我吗?

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);
}

即使我在下面尝试在 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);

最佳答案

您可以使用此正则表达式来捕获您的文本:

(?<=\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}|$))

并抓取第 1 组中的文本,即

matcher.group(1);

Working Demo

关于java - 我如何使用java正则表达式获取日期之间的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24308359/

相关文章:

正则表达式作为 Lua 模式

regex - 如何在标签中查找报价?

javascript - 更改marked.js图像/链接表达式

java - 如何在 Java 桌面应用程序中使用 Windows 7 跳转列表?

JavaFX:TableView 单元格像素化 ImageView - 如何撤消转换?

javascript - 用于标记文本的正向前瞻正则表达式

javascript - 重构大型/旧 CSS 文件

java - 尝试安排 TimerTask 时出现语法错误

java - 我可以在没有 Message Broker 的情况下使用 Spring Integration

java - 尝试使用 Maven 构建第一个 Spring 项目