我有一個字符串,比如說「5 + 30」,我需要將它解析爲令牌5,30,+。我怎麼做?除了「+」,還可以有任何算術運算符?我認爲正則表達式可以做到,但我不是輕蔑他們。非常感謝你的幫助。解析計算令牌
Q
解析計算令牌
2
A
回答
0
下面是一個使用Scanner
類爲例begenning例子:
Scanner s = new Scanner("53+12-1+12");
String token;
while (null != (token = s.findInLine("\\d+|[+-]")))
System.out.println(token);
輸出:(ideone.com demo)
53
+
12
-
1
+
12
但是,請注意,如果您嘗試評估表達式這將是有限的幫助作爲y你仍然需要照顧運營商優先和可能的父母。我建議你爲這樣的任務使用合適的解析器生成器。
0
通常你會使用掃描儀。下面是用Java編寫的掃描儀的一個例子:http://download.oracle.com/javase/tutorial/essential/io/scanning.html
您還可以使用java.util.Scanner的 - 這裏的教程: http://www.java-tips.org/java-se-tips/java.util/scanning-text-with-java.util.scanner-3.html
0
應該爲你工作正則表達式是:
[0-9]+|[^0-9]+
你會使用java字符串匹配或匹配器類來完成這些工作你
您可以設定要支持運營商的更換[^ 0-9] +的一部分,例如:
[0-9]+|[+-/*]
2
我假設你正在嘗試編寫某種算術處理器,所以我建議你使用一個解析器生成器,如ANTLR。它有一個編寫算術文法的教程。
解析器生成器非常一般,所以它可能會對您的項目過度,但它仍然值得一看。瞭解如何使用解析器生成器(以及更重要的是何時)總是非常有用。
0
您可以查看pattern以獲取更好的文檔。 您的字符串將對應於像[0-9]+\p{Punct}{1}[0-9]+
有一個在文檔中如何使用它
相關問題
- 1. saml令牌解析器無法解析令牌引用
- 2. 在Beanshell中解析令牌
- 3. 無效令牌解析
- 4. 解析LocalDate hashMap令牌
- 5. 解析EOF令牌CUP
- 6. java中的令牌解析
- 7. 數學解析器/詞法分析器 - 令牌接口設計
- 8. 檸檬分析器解析0令牌
- 9. JMeter是不正確解析令牌變量吉拉令牌
- 10. 用令牌計算API調用
- 11. 在c語句中計算令牌
- 12. 如何計算ByteOrderedPartitioner的令牌
- 13. 令牌未知,火鳥計算
- 14. 斯卡拉:解析匹配令牌
- 15. 簡單的Antlr3令牌解析
- 16. 的Drupal:令牌解析問題
- 17. ANTLR中的Mediawiki解析:處理'令牌
- 18. ESLint:解析錯誤:意外的令牌':'
- 19. org.xml.sax.SAXParseException:解析XML時意外的令牌
- 20. ESLint解析錯誤:意外的令牌
- 21. 託管C++無法解析的令牌
- 22. 在Java中解析ADFS令牌
- 23. 在Python中解析令牌列表
- 24. 解析Facebook RSS時意外的令牌
- 25. 數學解析器 - 令牌結構
- 26. LNK2020:無法解析令牌(0A00001F)__imp__xmlFree
- 27. eslint解析錯誤:意外的令牌=
- 28. 解析:重置密碼令牌
- 29. '*'令牌之前的解析錯誤
- 30. C++/CLI中的未解析令牌
你的表達式是否有括號? – aioobe 2011-01-11 17:44:57
http://stackoverflow.com/questions/1320891/java-rpn-reverse-polish-notation-infix-to-postfix和http://stackoverflow.com/questions/4240595/getting-wrong-outputs-in-infix -java-to-postfix-application-with-java似乎涵蓋Java中的infix-to-postfix轉換。 – dkarp 2011-01-11 17:49:57