regex - 在单独的匹配器中使用正则表达式解析日期和日期时间

标签 regex string-matching

我需要正则表达式在我的逻辑中以不同的方式解析日期和时间。

我尝试使用下一个模式:

^(\d{8})+(?:T((\d{6})[^Z])?).*$

我对输入数据的期望

19960404T010000Z
19960404T010000
19960404T
19960404

group1   | group2
-----------------
19960404 | 010000
19960404 | 010000
19960404 | 
19960404 |

有人可以检查我的模式问题吗(它没有按预期工作)? 为了节省您的时间,我准备了example using regex checker .

最佳答案

你可以使用

^(\d{8})(?:T(?:(\d{6})Z?)?)?$

参见 regex demo

详情

  • ^ - 字符串的开始
  • (\d{8}) - 第 1 组:八位数字
  • (?:T(?:(\d{6})Z?)?)? - 一个可选的序列
    • T - T
    • (?:(\d{6})Z?)? - 一个可选的序列
      • (\d{6}) - 第 2 组:六位数字
      • Z? - 一个可选的 Z
  • $ - 字符串结尾

关于regex - 在单独的匹配器中使用正则表达式解析日期和日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47138657/

相关文章:

php - 使用 PHP 过滤掉重复 CSS 规则的最快方法是什么?

mysql - 部分字符串匹配mysql

python - 使用正则表达式从 pandas 列中提取子字符串

javascript - 仅匹配给定字符串中单词序列中的字符

Java正则表达式模式匹配

java - 删除 xml 文件的缩进

java - 在 DAWG 而不是 Trie 上使用 Aho-Corasick

java - 如何使用 Java 中的正则表达式匹配函数来匹配具有元字符的字符串

r - (在 R 中)如何在保留缩写的情况下将 "WeLiveInCA"之类的字符串中的单词按标题大小写拆分为 "We Live In CA"?

R - 匹配除 URL 内的所有标点符号的正则表达式