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