我在一個字符串中有這個多項式。如何製作只匹配整數的正則表達式?
x^3+0.125x+2
我想在這裏匹配3和2,但不是0.125。只是整數。我現在最好的是這個,但這仍然與0.125中的25匹配。
(?<!\.)\d+(?!\.)
我在一個字符串中有這個多項式。如何製作只匹配整數的正則表達式?
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
確保匹配整個號碼
謝謝。它正是我所需要的。我沒有想到使用\ b。 – 2013-02-25 00:45:58
它與整數網不匹配'x'或其他字母。我將它改爲「(?<!\。)(\ b |(?<= \ D))\ d +(\ b |(?= \ D))(?!\。)」魅力。感謝您的幫助。 – 2013-02-25 01:06:03
它不接受數字前面的減號,但它對我來說不是必要的。我的計劃是使用它將整數轉換爲浮點數,在它們後面添加一個點。我可能會做一個稍後接受減號的人。 – 2013-02-25 01:18:14
的整數是一個數字僅包含數字,可選e
或E
(僅當其次是數字),並可選地以-
開頭。在左邊只能有一個非數字和非字母(因爲x2
將被視爲一個變量名)或者什麼也不是。右邊只能有一個非數字或沒有任何數字(右邊的2x
將是)。
下面的模式應該在一個字符串根據給定的規格相匹配的所有整數:
r'(?:^|(?<=[^\d\w\.]))(?:(?:(?<![\d\w])|^)\-)?\d+(?:[eE]\d+)?(?!\.)(?=[^\d]|$)''
這是一個很好的。前一個答案中的答案符合我的要求,但這個答案令人印象深刻。我將不得不給它更詳細的外觀。 – 2013-02-27 17:24:08
「我來了迄今最好的是這個」?是什麼*?你用哪種語言進行編程? – Johnsyweb 2013-02-25 00:35:48
對不起,我沒有把正則表達式放在代碼塊中。我沒有正確渲染。我在python編程。 – 2013-02-25 00:39:46
複製了錯誤的正則表達式。這是正確的。這可能是時候去睡覺了。 – 2013-02-25 00:42:42