2016-03-08 21 views
2

我試圖解析多項式,例如:正則表達式解析多項式爲monom

16-3x^25-6-483*x+7+5*x+8-x-15 

其實,我有這樣的正則表達式:

([+-]?[0-9]*?\*?x(\^[0-9]+)?) 

將返回:

-3x^25 
-483*x 
+5*x 
-x 

這給了我一個係數(數字)和一個litteral部分的所有部分。

但我不能找到一個辦法讓數字不litteral部分:

16 
-6 
+7 
+8 
-15 

我可以簡單地用分割法:

str.split(/[+-]/) 

讓所有的monoms但這樣一來,我放棄了數字前面的標誌。

另一次嘗試使用此正則表達式:

([+-]?(\d+)?\*?x?) 

這將返回我需要的所有部件(帶有符號),但我不能管理在這個例子中,「權力」標誌X^25。

+0

parseFloat(String)將爲您提供帶正確符號的數字。 – nick

+0

https://regex101.com/r/gG0tA8/1? – Enissay

+0

@ Enissay:正則表達式獲取所有係數。這很好,除了我已經知道相應的輸尿管部件。 –

回答

0

你可以做一個「文字部分」可選的:

(?=.+)([+-]?[0-9]*(?:\*?x(?:\^[0-9]+)?)?) 

DEMO

編輯: 更換[0-9]*[0-9]+是一個錯誤,沒有*正則表達式不會匹配只包含文字元素,如您指出。所以我將它改回來,並添加(?=.+)以避免匹配空白空間。

+0

幾乎所有內容都被提取。除了-x(或+ x)。 –

+0

@BasilGass是的,我的錯誤,我編輯答案 –

+0

它的作品完美。謝謝!只是一個錯字:chenged應該改變(我不能編輯這一個 - 它要求改變至少6個字母)。 –