2012-01-24 58 views
0

在此程序中,我將輸入解析爲整數,似乎無法取負數並嘗試了一堆正則表達式。我可以通過刪除& & ^來獲得正整數,這只是我遇到的負整數。正則表達式在java中包含負數

例子:

input = console.readLine("?> ").split("\\D+&&^-"); 

任何想法,我做錯了嗎?感謝您提前提供任何幫助。

樣品輸入: -7 * 4

輸出: -7和4應該被存儲到一個字符串數組。

+0

預期的輸入和輸出是什麼? –

+0

輸入是一個字符串,輸出是一個int。 –

+0

你能舉個例子嗎? –

回答

3

&&不是正則表達式中的「和」運算符。我想你打算使用[^0-9-]+,對吧?

我推薦匹配而不是分裂。然而,你也不會輕易地解決-12-34的情況。分裂會給你一個單一的,不可解析的數字。與-?\d+匹配會給你兩個數字,沒有任何內容(儘管你可以將它作爲默認的+)。

+0

我一遍又一遍地讀了它們。看起來像&&是一個運算符http://docs.oracle.com/javase/tutorial/essential/regex/char_classes.html –

+0

如果用戶在這種情況下輸入「-1-23」,那麼輸出將是-1 '&'-23'都是有效的負整數。 – RanRag

+1

@LightyearBuzz恐怕你在翻閱錯誤的頁面。字符類(注意這裏的「字符」)與「正則表達式」本身無關。*您可能想要[+ - ]?,但即使在這種情況下,「無符號」不是角色類的一部分。 – alf

0

-\d*應該會得到一個負整數。如果您需要更精緻的東西,例如十進制數字,請查看this link

+1

它也會匹配'-'的字符串,比如'hey-ho' – alf