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