Trouble with a very simple regex

python, regex

Solution

The problem is that `[0-9]*` matches zero or more digits, so it is more than happy to match to a zero-length string.

Meanwhile, `[0-9]+` matches one or more digits, so it needs to see at least one number in order to catch.

you might want to use `findall` and handle the case in which you have multiple numbers per line.

Problem

I am using python to try to write some simple code that looks through strings with regular expressions and finds things. In this string: ``` and the next nothing is 44827 ``` I want my regex to return just the numbers. I have set up my python program like this: ``` buf = "and the next nothing is 44827" number = re.search("[0-9]*", buf) print buf print number.group() ``` What number.group() returns is an empty string. However, when the regex is: ``` number = re.search("[0-9]+", buf) ``` The full number (44827) is properly extracted. What am I missing here?

Original source