在java中解析字符串中的简单日期
在我的程序中,用户应该能够指定命名方案。他们指定的命名方案应包含一个简单的日期格式,如“yyyyMMdd”、“MM-dd-yyyy”、“yyyy/MM/dd”等。我希望日、月和年的顺序无关紧要,但可以要求一定的顺序(如先年后月,然后是天)。我希望能够轻松地从字符串中检索此日期,以便将其用于SimpleDataFormat类 以下是一些例子:在java中解析字符串中的简单日期,java,regex,date,simpledateformat,Java,Regex,Date,Simpledateformat,在我的程序中,用户应该能够指定命名方案。他们指定的命名方案应包含一个简单的日期格式,如“yyyyMMdd”、“MM-dd-yyyy”、“yyyy/MM/dd”等。我希望日、月和年的顺序无关紧要,但可以要求一定的顺序(如先年后月,然后是天)。我希望能够轻松地从字符串中检索此日期,以便将其用于SimpleDataFormat类 以下是一些例子: input string: "abc?>@dyyyy-MM-dd-|(s*&d)" output string: "yyyy-MM-
input string: "abc?>@dyyyy-MM-dd-|(s*&d)"
output string: "yyyy-MM-dd"
input string: "daddy-MM/dd/yyyy-moMMy"
output string: "MM/dd/yyyy"
最终,我要做的是替换(在用户提供的字符串中)用当前日期指定的日期格式
如果我想修复它,以便用户只能输入年、月、日,那么我可以这样做:
String dateFormat = name.substring(name.indexOf("yyyy"), name.indexOf("dd") + 2)
但这意味着用户不能在字符串的其余部分使用字符串序列“yyy”和“dd”,否则此方法将不起作用。这个表达式也可以用正则表达式表示,但我不知道如何轻松地从字符串中提取与正则表达式匹配的子字符串。使用正则表达式模式
(MM|dd|yyyy)[\\/-]?(?!\\1)(MM|dd|yyyy)[\\/-]?(?!\\1)(?!\\2)(MM|dd|yyyy)
您可能希望在上述模式的
[…]
部分中添加一些您希望允许的其他分隔符。您可以使用从正则表达式中提取结果;更多类似于%Y表示年份、%m表示月份、%d表示天数的内容?@Asad-因为您已经删除了您的答案,您现在也应该删除上面的评论,因为其他用户不会理解它…谢谢!这个正则表达式可以工作,但是如何使用它从整个字符串中检索这个子字符串呢?我的字符串将采用W格式“*(MM | dd | yyyy)[\\/-](?!\\1)(MM | dd | yyyy)[\\/-](?!\1)(?!\2)(MM | dd | yyyy)。*”我只想要字符串中与regex@user972276-阅读