0

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

x^3+0.125x+2

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

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

2 回答 2

1

你可以试试这个:

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

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

于 2013-02-25T00:42:19.247 回答
1

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

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

r'(?:^|(?<=[^\d\w\.]))(?:(?:(?<![\d\w])|^)\-)?\d+(?:[eE]\d+)?(?!\.)(?=[^\d]|$)''
于 2013-02-25T02:02:06.237 回答