regex - 日期时间格式的动态正则表达式

标签 regex datetime information-retrieval

是否有现有的解决方案可以根据给定的日期时间格式模式动态创建正则表达式?支持的日期时间格式模式无关紧要(Joda DateTimeFormatjava.text.SimpleDateTimeFormat 或其他)。
作为特定示例,对于给定的日期时间格式,如 dd/MM/yyyy hh:mm ,它应该生成相应的正则表达式以匹配指定格式内的日期时间。

最佳答案

我猜您的时间格式可以由有限的字母表构成。这意味着,"HH"将始终为 24 小时制的“小时”,"dd"总是带前导零的那一天,依此类推。

由于时间格式的顺序性质,您可以尝试对 "dd/mm/yyyy HH:nn" 的格式字符串进行标记化。成一个数组 ["dd", "/", "mm", "/", "yyyy", " ", "HH", ":", "nn"] .然后继续并通过替换 "HH" 从该数组形成一个模式字符串与 "([01][0-9]|2[0-3])"等等。将这些模式原子预先构建到查找表/数组中。不在查找表中的数组的所有部分都是文字。根据正则表达式规则将它们转义并将它们附加到您的模式字符串中。

编辑:作为基于正则表达式的解决方案的副作用,当您将查找表的所有正则表达式“原子”放入括号并在给定格式字符串中跟踪它们的顺序时,您将能够使用子匹配来提取匹配中需要的组件并将它们提供给 CreateDate 函数,从而完全跳过 ParseDate 部分。

关于regex - 日期时间格式的动态正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52066/

相关文章:

javascript - 如何在带有括号的javascript中使用正则表达式运算符 'or'?

regex - 在保留换行符的同时修剪字符串

python - 在 Python 中将字符串日期转换为时间戳

datetime - Ubuntu 16.04 镜像中的 Docker 时区

python - 理解卡方特征选择的问题

java - 如何在 Java Lucene 6.2.0 中创建索引和搜索查询

java - MapReduce 中是否有索引器的 Java 实现?

Java ReplaceAll() 提取数字和句点

javascript - Either|Or 正则表达式的一部分,用于匹配两种可能性

JavaScript:以 mm/dd/yyyy 格式拆分和连接日期