我試圖提高我的正則表達式技能,所以我做了一個基本的計算器來練習模式匹配。提示用戶輸入兩個整數值到控制檯中,用逗號分隔,沒有空格。我並不擔心int的值太大,我只想覆蓋用戶輸入-0的情況。正數0,所有其他負值和正值都應該被接受。Java正則表達式匹配來自用戶輸入的整數
掃描器對象抓取用戶的輸入並將其存儲在字符串變量中。然後將此變量傳遞給一個具有模式和匹配器的方法,該方法執行匹配並返回匹配與否的布爾值。
String userInput = scanner.next();
//look for only integers, especially excluding -0
if(checkUserMathInputIsGood("REGEX", userInput))
{
int sum;
String[] twoNumbersToAdd = userInput.split(",");
sum = Integer.parseInt(twoNumbersToAdd[0]) + Integer.parseInt(twoNumbersToAdd[1]);
System.out.println(sum);
}
經過數小時的淘洗stackoverflow,javadocs等,我發現了幾乎工作的一些解決方案。
http://www.vogella.com/tutorials/JavaRegularExpressions/article.html#regex_negative
http://www.regexplanet.com/advanced/java/index.html
Java regular expression for negative numbers?
與開頭的模式例如 「T(等等等等)」 沒有在所有的工作,而且我找不到什麼T A參考應該完成。我已經接近:
"-{0,1}(?!0)\\d+,-{0,1}(?!0)\\d+"
打破它,這似乎是說:允許一個負號至少爲0,最多爲1次。如果負號的所謂「負向預測」爲真,則不允許爲0。然後允許至少有一個整數長的整數值。但是,這導致正則表達式拒絕0以及-0。輸入的
實例應當被接受的:
2,3
22,-4
-555,-9輸入這應該是的
0,88
0,0
實例被拒絕:
-0,9
432,-O
-0,-O
不限ħ艾爾普或建議非常感謝。
你能給允許輸入的例子嗎? – 2014-09-20 03:28:48
完成,對不起,我應該做到這一點。編輯:我想也許我可以用我的正則表達式檢查方法兩次。例如,通過一次檢查整數,然後再次檢查-0不存在。但我覺得這應該是可行的。 – Yankee 2014-09-20 04:04:48