[英]Regular expression for math operations with parentheses
在Java中,我試圖編寫一個與數學表達式中的一個單元匹配的正則表達式,即運算符之間的內容
我的意思是,在類似1 + [1 + 2]的表達式中,正則表達式應匹配前1個,然后匹配[1 + 2]。
我所擁有的是* [([-+]?\\ d +(\\。\\ d +)?)(\\ [。+ \\])] *
其中([-+]?\\ d +(\\。\\ d +)?)應該匹配任何數字,並且
(\\ [。+ \\])
應該匹配括號內的內容,但是不起作用...由於某種原因,它匹配']'和''之類的內容。
任何幫助將是巨大的:)
不幸的是,這是練習的一部分,因此我只能使用基本的Java庫...這也意味着它是正則表達式中的練習。 我在這里缺少基本的東西嗎?
您將無法使用正則表達式來完成此操作。 可以使用BNF語法描述算術表達式,該語法可以使用JavaCC或ANTLR等工具生成解析器。
這是我使用JavaCC實現的表達式解析器:
來源是EPL。 如果環顧CVS所在的位置,您還將找到AST類和評估邏輯。 該實現源自為JSP / JSF規范定義的表達語言。
我根據Apache License 2.0的條款發布了基於Dijkstra的Shunting Yard算法的表達式評估器:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.