pythonregexalteryx

Regex to extract multiple numbers with decimal


I have the following group of numbers:

SalesCost% Margin
2,836,433.182,201,355.6422.39

Expected Result:

I want to separate this and extract the numbers such that I get the result as shown below:

2,836,433.18
2,201,355.64
22.39

Attempt

I tried the (\d+)(?:\.(\d{1,2}))? regex but this only extracts the number until the first decimal, i.e. I only get 2,836,433.18.

Question

Is there a way I can extract the numbers using Regex (or alternatively someway through Python) to get the results shown above?


Solution

  • You can use

    re.findall(r'\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?', text)
    re.findall(r'(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d{1,2})?', text)
    

    See the regex demo #1 and regex demo #2.

    Details:

    The (?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d{1,2})? variation supports numbers like 123456.12, i.e. no digit grouping symbol containing integer parts.