echo 'iweigh297lbs' | sed 's/.*[^0-9]\([0-9]\+\).*/\1/'
The expression has to match the whole line.
Greed: The expression will match the largest possible from left to right.
This won’t work.
echo 'iweigh297lbs' | sed 's/.*\([0-9]\+\).*/\1/'
Output 7
This won’t work
echo 'iweigh297lbs' | sed 's/.*[^0-9]\([0-9]*\).*/\1/'
This works
echo 'iweigh297lbs' | sed 's/.*[^0-9]\([0-9][0-9]*\).*/\1/'
+ has to be escaped. * should not be escaped.