1

演算子とオペランドを含む方程式があります。私はそれを分割し、演算子とオペランドを次のように 1 つの文字列配列に抽出したいと考えています。

4+3 -2 + 1* 5 -2

4,+,-,2,+,1,*,5,-,2

これに対して推奨される正規表現パターンはありますか?

4

2 に答える 2

1

これは正規表現で行う方法です。これらはあまり使用していないため、改善できる可能性があります。

Pattern pattern = Pattern.compile("[0-9]+|(\\+|-|\\*)");
Matcher matcher = pattern.matcher("4+3 -2 + 1* 5 -2");
List<String> parts = new ArrayList<>();
while (matcher.find()) {
    parts.add(matcher.group());
}
String[] array = parts.toArray(new String[parts.size()]);
System.out.println(Arrays.toString(array));

出力:

[4, +, 3, -, 2, +, 1, *, 5, -, 2]
于 2015-03-25T22:07:44.590 に答える
0

あなたがやろうとしていることは、トークン化と呼ばれます。これには正規表現は必要ありません。を使用できるはずですStringTokenizer。この他の SO 投稿の答えは、あなたのニーズに合うはずです: String Tokenizer in Java

アップデート

元の提案はニーズに合っているはずですが、StringTokenizerクラスは非推奨に近づいているようです。

javadoc から:

StringTokenizer は、新しいコードでの使用は推奨されていませんが、互換性のために保持されているレガシー クラスです。この機能が必要な場合は、代わりに String の split メソッドまたは java.util.regex パッケージを使用することをお勧めします。

とにかく使いたいならオプションです

于 2015-03-25T22:06:17.367 に答える