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