2

GoogleRefineを使用してデータセットをクリーンアップしています。mm / dd/yyyy形式の日付を含む列が1つあります。mm / dd/yyyyがyyyyのみに置き換えられた新しい列を作成したいと思います。

私が試してみました

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

そして現れたのは

エラー:replaceは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")

ところで、Webには正規表現の缶詰がたくさんあり、自分で再作成するのではなく、検索するだけで済みます。これが私がここで行ったことです。私はその複雑な/特定の近くのどこにもそれをしなかっただろう。マッチングをどの程度厳密/リベラルにするかに応じて、ニーズに合わせて調整する必要があります。

于 2012-12-02T13:41:43.323 に答える
0

置換のコンマを参照してください。そのクラスのメソッドのオーバーロードでは、.replace()メソッドへの引数を区切るコンマがないことを意味する3つの文字列または1つの文字列が必要です。

于 2012-12-02T04:33:44.987 に答える
0

問題を再現できませんが、正規表現が正しくありません。これを試してください

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

String.replace()は正規表現では機能しないことに注意してください。代わりに、String.replaceAll()またはString.replaceFirst()を使用してください。

于 2012-12-02T04:05:16.280 に答える