我正在使用 Google Refine 清理数据集。我有一列日期为 mm/dd/yyyy 格式。我想创建一个新列,其中 mm/dd/yyyy 仅替换为 yyyy。
我努力了
value.replace(/.+(\d\d\d\d)\*/, /$1/)
出现的是
错误:替换需要 3 个字符串,或 1 个字符串、1 个正则表达式和 1 个字符串
为什么会出现这个错误?感谢您帮助初学者!
我正在使用 Google Refine 清理数据集。我有一列日期为 mm/dd/yyyy 格式。我想创建一个新列,其中 mm/dd/yyyy 仅替换为 yyyy。
我努力了
value.replace(/.+(\d\d\d\d)\*/, /$1/)
出现的是
错误:替换需要 3 个字符串,或 1 个字符串、1 个正则表达式和 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")
顺便说一句,网络上有很多罐装的正则表达式,您可以搜索而不是自己重新创建它们,这就是我在这里所做的。我不会在那么复杂/具体的地方做到这一点。您应该根据自己的需要进行调整,具体取决于您希望匹配的严格/自由程度。
我无法重现该问题,但您的正则表达式不正确,试试这个
System.out.println("01/01/2012".replaceAll("(\\d+/){2}(.+)", "$2"));
请注意,String.replace() 不适用于正则表达式。请改用 String.replaceAll() 或 String.replaceFirst()。
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.