我想运行表达式的字符串将是以下两种类型:
2012-11即yyyy-mm
11-2012 ie mm-yyyy
我想编写一个正则表达式来构造格式字符串:
(正则表达式group1) - (正则表达式group2)
使得group1始终是yyyy部分,group2是mm。
我想编写此函数以将日期格式规范化为单个yyyy-mm类型。
可以使用正则表达式来解决这个问题吗?
答案 0 :(得分:3)
答案 1 :(得分:1)
匹配:\b(?:(\d{4})-(\d{2})|(\d{2})-(\d{4}))\b
替换:$1$4-$2$3
如果某个组未参与该匹配,则替换字符串中对该组的任何引用都将被视为空字符串。因此,与#4组连接的组#1将始终是年份,组#3与组#3连接将始终是该月。
这假设您正在使用您的语言的正则表达式替换机制,如PHP的preg_replace()
或Java的replaceAll()
。如果您使用(例如)Java的group(n)
方法,则非参与组将返回为空值,当您将它们分配给字符串变量时,将转换为单词null
。所以像
String year = m.group(1) + m.group(4);
...会产生2011null
或null2011
。大多数语言比这更聪明,但这是你应该注意的。