正则表达式以查找字符串中的任何数字

Tak*_*kun 13 python regex

重新编号是什么?就像我正在搜索字符串中的任何数字,正面或负面.我一直在使用\ d +但是找不到0或-1

Gre*_*ins 22

搜索正数,负数和/或小数,您可以使用 [+-]?\d+(?:\.\d+)?

>>> nums = re.compile(r"[+-]?\d+(?:\.\d+)?")
>>> nums.search("0.123").group(0)
'0.123'
>>> nums.search("+0.123").group(0)
'+0.123'
>>> nums.search("123").group(0)
'123'
>>> nums.search("-123").group(0)
'-123'
>>> nums.search("1").group(0)
'1'
Run Code Online (Sandbox Code Playgroud)

当然,这对于前导/尾随零并不是很聪明:

>>> nums.search("0001.20000").group(0)
'0001.20000'
Run Code Online (Sandbox Code Playgroud)

编辑:更正了上述正则表达式以查找单位数字.

如果您想添加对指数形式的支持,请尝试[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?:

>>> nums2 = re.compile(r"[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?")
>>> nums2.search("-1.23E+45").group(0)
'-1.23E+45'
>>> nums2.search("0.1e-456").group(0)
'0.1e-456'
>>> nums2.search("1e99").group(0)
'1e99'
Run Code Online (Sandbox Code Playgroud)

  • 纠正我,但你的正则表达式不会匹配单位数字? (2认同)