This issue has already been raise in
http://bugs.python.org/issue9334
argparse does not accept options taking arguments beginning with dash (regression from optparse)
There I proposed leaving '_negative_number_matcher' unchanged, but only use it to set '_has_negative_number_optionals'. Testing whether argument strings are numbers or not is better done with 'complex()'.
if not self._has_negative_number_optionals:
try:
complex(arg_string)
return None
except ValueError:
pass
That was my first patch, and I haven't looked at it much since then, other than testing that it is compatible with a number of other proposed patches.