2

我正在使用 Google Refine 清理数据集。我有一列日期为 mm/dd/yyyy 格式。我想创建一个新列,其中 mm/dd/yyyy 仅替换为 yyyy。

我努力了

value.replace(/.+(\d\d\d\d)\*/, /$1/)

出现的是

错误:替换需要 3 个字符串,或 1 个字符串、1 个正则表达式和 1 个字符串

为什么会出现这个错误?感谢您帮助初学者!

4

3 回答 3

1

如果这些值只是该常规格式的日期,那么简单的解决方案是:

value.split('/')[2]

如果您需要从长字符串的中间取出日期,或者只是想弄乱正则表达式:-),那么您可以使用

value.replace(/([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])/, "$3")

顺便说一句,网络上有很多罐装的正则表达式,您可以搜索而不是自己重新创建它们,这就是我在这里所做的。我不会在那么复杂/具体的地方做到这一点。您应该根据自己的需要进行调整,具体取决于您希望匹配的严格/自由程度。

于 2012-12-02T13:41:43.323 回答
0

我无法重现该问题,但您的正则表达式不正确,试试这个

System.out.println("01/01/2012".replaceAll("(\\d+/){2}(.+)", "$2"));

请注意,String.replace() 不适用于正则表达式。请改用 String.replaceAll() 或 String.replaceFirst()。

于 2012-12-02T04:05:16.280 回答
0

See the comma in your replace, the method over-loadings for that class expect either 3 strings or 1 string meaning no comma or two commas separating arguments to .replace() method.

于 2012-12-02T04:33:44.987 回答