Techioz Blog

数値を含む文字列から数値を抽出する正規表現

概要

正規表現で、少なくとも 1 つの数値を含む文字列から最初の数値を抽出したいと考えています (. は 10 進数、 , は千の位の区切りであると仮定します)。

examples  = ["I earned $100,000", "I earned $100000", "I earned $100000.05"]
desired_output =  ["100000", "100000", "100000.05"]

私が試した正規表現は次のとおりです。

regex = /((\d{1,3}(?:,\d{3})*)(?:\.(\d{0,2}))?)/

ただし、文字列「I獲得 00000」の場合は、「100000」ではなく「100」が抽出されます。

regex.match("I earned $100000") #returns 100

この正規表現を変更するにはどうすればよいですか?

解決策

まずテキスト全体 [“100,000”,“100000”,“100000.5”] と一致させてから、不要な区切り文字を削除する必要があります。 パターン: [.]+

000 をキャプチャされていないグループのままにしているため、正規表現パターンは 100 のみに一致します