2013-07-27 10 views
7

Google Refineの列から一連の数値を抽出しようとしています。ここでそれを行うための私のコードは次のとおりです。Value.match()Googleの正規表現

value.match(/[\d]+/)[0] 

私の列のデータが

abcababcabc 1234566 abcabcbacdf 

の形式である結果が「ヌル」です。なぜ私は考えていない! \dの代わりに\wを試しても、nullになります。

答えて

7

OpenRefineは、いくつかのシステムがそうしているように、暗黙的なワイルドカードをパターンの最後に追加しません。代わりに、このパターンを試してみてください:

value.match(/.*?(\d+).*?/)[0] 

彼らはあまりにもあなたの数字の一部を飲み込んでいないようにするには、ワイルドカードでのんびり/非欲張り修飾子(すなわち疑問符)が必要です。 /.*(\d+).*/を使用すると、残りの文字は。*パターンになりますので、1桁の数字にしか一致しません。

実装に関する完全なドキュメントは、JavaのPattern class docsに記載されています。

+0

こんにちはTom - あなたの答えをありがとう。私はあなたの提案を試みましたが、まだNULLを取得しています – mchangun

+0

私は開発版を使用していたと思われますが、 1234566私は本当に何を提案するか分からない。 –

+0

これは実際には今働いています - 少し違う入力で試していました。あなたはあなたの正規表現が何を意味するかを説明/解析できますか?怠惰な/貪欲でない修飾子とは何ですか? また、私が読んでいるドキュメントは役に立たないようです(https://github.com/OpenRefine/OpenRefine/wiki/Understanding-Regular-Expressions)。 Open Refineのregexについて説明する別のリファレンスがありますか? ありがとうございます! – mchangun