私はこの多項式を文字列に持っています。
x^3+0.125x+2
ここで 3 と 2 を一致させたいのですが、0.125 は一致させません。整数だけです。私がこれまでに持ってきた最高のものはこれですが、これでも 0.125 で 25 に一致します。
(?<!\.)\d+(?!\.)
整数は、数字のみを含む数値であり、オプションのe
or E
(数値が続く場合のみ) であり、オプションで . で始まります-
。左側には、非数字および非文字 (x2
変数名と見なされるため) のみが存在するか、または何も存在しません。右側には、非数値または何もないことしかできません (2x
右側は になります2*x
)。
次のパターンは、指定された仕様に従って、文字列内のすべての整数に一致する必要があります。
r'(?:^|(?<=[^\d\w\.]))(?:(?:(?<![\d\w])|^)\-)?\d+(?:[eE]\d+)?(?!\.)(?=[^\d]|$)''
これを試すことができます:
>>> import re
>>> re.findall(r'(?<!\.)\b\d+\b(?!\.)', "x^3+0.125x+2")
['3', '2']
を使用\b\d+\b
して、番号全体が一致することを確認します