我在一个字符串中有这个多项式。
x^3+0.125x+2
我想在这里匹配 3 和 2,而不是 0.125。只是整数。到目前为止我最好的是这个,但这仍然与 0.125 中的 25 匹配。
(?<!\.)\d+(?!\.)
你可以试试这个:
>>> import re
>>> re.findall(r'(?<!\.)\b\d+\b(?!\.)', "x^3+0.125x+2")
['3', '2']
用于\b\d+\b
确保匹配整个数字
整数是仅包含数字、可选的e
或E
(仅当后跟数字时)和可选以 开头的数字-
。左边只能是非数字和非字母(因为x2
将被视为变量名)或什么都没有。右边只能有一个非数字或什么都没有(2x
右边是2*x
)。
以下模式应根据给定规范匹配字符串中的所有整数:
r'(?:^|(?<=[^\d\w\.]))(?:(?:(?<![\d\w])|^)\-)?\d+(?:[eE]\d+)?(?!\.)(?=[^\d]|$)''