正则表达式匹配数字和单位

时间:2013-03-09 22:48:38

标签: python regex

我有一些输入,包括如下行:

5feet
23m^2
7 m/s

我想把它们重写为:

5 feet
23 m^2
7 m/s

为此,我可以使用:

re.sub(r"([0-9])(?=[a-zA-Z])",r"\1*","5feet")

但是,我的数字看起来像是:

23e-7
58.234e-200

与上述模式匹配。

有没有办法让正则表达式以某种方式匹配第一组,但排除第二组?

1 个答案:

答案 0 :(得分:1)

你可以使用否定预测断言(?!...)(与(?=...)相反)来排除这种情况:

re.sub(r"([0-9])(?=[a-zA-Z])(?!e[+-]?\d)",r"\1*","5feet")