如何制作仅匹配整数的正则表达式?

时间:2013-02-25 00:33:37

标签: python regex

我在字符串中有这个多项式。

x^3+0.125x+2

我想在这里匹配3和2,但不是0.125。只是整数。我到目前为止最好的是这个,但这仍然与0.125中的25匹配。

(?<!\.)\d+(?!\.)

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

>>> import re
>>> re.findall(r'(?<!\.)\b\d+\b(?!\.)', "x^3+0.125x+2")
['3', '2']

使用\b\d+\b确保匹配整个数字

答案 1 :(得分:1)

整数是仅包含数字的数字,可选eE(仅当后跟数字),并且可选地以-开头。在左边只能有一个非数字和非字母(因为x2将被视为变量名称)或什么也不是。在右边只能有一个非数字或没有(2x在右边是2*x)。

以下模式应该根据给定的规范匹配字符串中的所有整数:

r'(?:^|(?<=[^\d\w\.]))(?:(?:(?<![\d\w])|^)\-)?\d+(?:[eE]\d+)?(?!\.)(?=[^\d]|$)''