2016-09-30 21 views
0

私には難解なことがあります。可能なさまざまな数学文字列を別のエンティティに分割してArrayListに格納する必要があります。数式演算子を使用したJava正規表現

スキャナからの入力は次のいずれかになります。

Scanner input = new Scanner(System.in); 
String read = input.nextLine(); 
ArrayList al = new ArrayList(); 

-5 + 10 //possible value of read 
9--5 //possible value of read 
-20* 10 //possible value of read 

は基本的に私は、最初の数と潜在的な負の符号、すべて無視して先頭または末尾の空白を取得し、それを格納する必要があり、その後、空白を無視して次の文字を取ると、それ(問題のオペレータ)を格納し、次の数字にオプションの負の符号を付け、再び空白を無視します。

私は正規表現ではあまりよくありません。ここでは、どのように対処するかわからない複雑な可能性がたくさんあります。私は論理的にそれをレイアウトしなければならないとしたら

、私は以下のようなものをそれを言う:

それを直接次の最後の番号の桁で最初の非空白文字と終了を取得します。

次の非空白文字を取得しますが、それを直接次の最後の数桁で次の非空白文字と終了を取得します。

これを達成するための構文の指針はありますか?

編集:私は単に問題の式の結果を解明しようとするのではなく、後で分数クラスの一部として操作するために、それを分解してArrayListに格納する必要があります。

+2

をつかむますので

パイプが意味する「または」空白まで、すべてをつかみますこれはネストされた算術式ではスケールされないためです。むしろパーサが必要です。 –

+0

regexを使う必要がありますか?そうでない場合は、この[answer](http://stackoverflow.com/a/36341949/4256677)を参照してください。 – varontron

答えて

0

本当にエレガントではないが、あなたは正と負の両方の数をつかむために正規表現を探しているなら、あなたは

-?\d+|\*|\/|\+|\-

-この正規表現を使用することができますが、負の数値を探し

?はそれを作りますオプションの検索

\d数字を検索

+は、それが正、負の数、または*、または/、または+またはあなたが正規表現を使用すべきではない-

関連する問題