Alex Rivera | Logout

Regular expression to match last number in a string

Asked 2011-03-16T02:51:23.333
57

I need to extract the last number that is inside a string. I'm trying to do this with regex and negative lookaheads, but it's not working. This is the regex that I have:

\d+(?!\d+)

And these are some strings, just to give you an idea, and what the regex should match:

ARRAY[123]         matches 123 
ARRAY[123].ITEM[4] matches 4
B:1000             matches 1000
B:1000.10          matches 10

And so on. The regex matches the numbers, but all of them. I don't get why the negative lookahead is not working. Any one care to explain?

Edit
Report

1 Answer

140

Your regex \d+(?!\d+) says

match any number if it is not immediately followed by a number.

which is incorrect. A number is last if it is not followed (following it anywhere, not just immediately) by any other number.

When translated to regex we have:

(\d+)(?!.*\d)

Rubular Link

answered 2011-03-16T03:55:55.000

Your Answer