Java 使用包含冒号的正则表达式匹配字符串
我尝试匹配从不同文件解析的不同日期格式。一种日期格式是例如:“Thu,2009年11月12日14:17:44-0000” 当我尝试将这个字符串与第一个正则表达式匹配时,我得到了一个true结果,当我使用第二个正则表达式时,我得到false结果Java 使用包含冒号的正则表达式匹配字符串,java,Java,我尝试匹配从不同文件解析的不同日期格式。一种日期格式是例如:“Thu,2009年11月12日14:17:44-0000” 当我尝试将这个字符串与第一个正则表达式匹配时,我得到了一个true结果,当我使用第二个正则表达式时,我得到false结果 [A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3}\\s+\\d{2}.* (1. regex) [A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3}\\s+\\d{2}:.* (2. regex) 在
[A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3}\\s+\\d{2}.* (1. regex)
[A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3}\\s+\\d{2}:.* (2. regex)
在我看来,两个正则表达式都应该匹配上述日期格式。我的失败在哪里?您似乎忘记了4位数的年份,因此第二个正则表达式不正确
第一个正则表达式的最后一部分是匹配
2009
的前两个数字,然后是后面的所有数字。我怀疑最后一部分“\s+\d{2}:.*”是匹配“14:”,但您忘记了年份。因此,解析器需要“:”但在2009年找到第二个零
你需要的是这样的东西:
[A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3}\\s+\\d{4}\\s+\\d{2}:.* (2. regex)
(我想应该过去了:)你忘记了那一年:
“[A-Za-z]{3},\\s+\\d{2}\\s+[A-Za-z]{3}\\p{Digit}{4}(\\p{Digit}{2}:){2}[0-9][0-9].”代码>
您还可以使用不同的格式测试小时数