Java正则表达式匹配用点分隔的日期

问题描述 投票:-2回答:2

我有以下正则表达式[\d\\d[.]\d\d[.]\d\d][\\d\\d\\.\\d\\d\\.\\d\\d].*,他们都正确匹配日期行,但也匹配不包含日期但只包含数字(和文本)的行。

我的文字格式是这样的:

12.04.18, 15:59 - A: xyz
12345 abc
12.04.18, 16:00 - B: cde
abc 12345

我希望正则表达式匹配第1行和第3行

java regex date
2个回答
0
投票

您需要转义句点字符,因为它在正则表达式中被视为通配符。此外,您正在使用不需要的Character Class。字符类用方括号表示,用于列出该位置的可接受字符。看看使用这个正则表达式:

\d\d\.\d\d\.\d\d.*$

Demo Here

说明

  • 如你所知,\d会搜索一个数字
  • qazxsw poi寻找字面上的qazxsw poi字符,而不是像一个外卡的时期的正则表达式解释
  • \.用于匹配我们的日期匹配后的剩余行
  • .表示线的结束,确保我们匹配整条线。

0
投票

通常的建议不是使用正则表达式来验证日期时间字符串,而是使用标准库中的日期时格式化程序。在您的情况下,它可能不是绝对必要的,但我想将它作为一个选项呈现给您和任何阅读的人。

.*

上面的代码段打印:

$

潜在优势包括:

  • 它给出了更严格的验证,即数字构成了有效的日期和时间。
  • 从代码中可以更清楚地检查日期时间。正则表达式读取和写入更加棘手。
  • 您将日期和时间作为日期时间对象获取,以便在需要时进行任何进一步处理。
© www.soinside.com 2019 - 2024. All rights reserved.