0

私はこのような文字列を持っています:

[1359873374000,281197568]、[1360044062000,1206052864]、[1360068648000,991623168]

[1359873374000,281197568]正規表現のように各アイテムを抽出するにはどうすればよいですか?

私はこのコードを書きましたが、機能しません:

String[] parts = mainstr.split("\\[[0-9],[0-9]\\]");
4

5 に答える 5

2

正規表現が一致し[1,2]ます。乗数を追加する必要があります。

"\\[[0-9]+,[0-9]+\\]"

編集:私はsplit()あなたが望むことをするだろうとは思わない。マッチャークラスを見てください。

Matcherクラスを使用したソリューション:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String sourceString = "[1359873374000,281197568],[1360044062000,1206052864],[1360068648000,991623168]";

Pattern pattern = Pattern.compile("\\[[0-9]+,[0-9]+\\]");
Matcher matcher = pattern.matcher(sourceString);

while (matcher.find()) {
  System.out.print("Start index: " + matcher.start());
  System.out.print(" End index: " + matcher.end() + " ");
  System.out.println(matcher.group());
}

これにより、番号ペアが出現するたびに表示されます。番号を個別に使用する場合は、次のようにキャッチできます"\\[([0-9]+),([0-9]+)\\]"。ただし、例を拡張する必要があります。

于 2013-02-07T10:57:02.817 に答える
1

あなたはそれを分割する必要があります

(?<=\\]),(?=\\[)
于 2013-02-07T10:59:47.833 に答える
1

[0-9]正確に1桁に一致します。数字のシーケンスを一致させる場合は、を使用します[0-9]*。空でない数字のシーケンスを照合する場合は、を使用します[0-9]+。あなたの場合、Java正規表現で「数字」を意味するので、おそらく"\\[[0-9]+,[0-9]+\\]"、またはを実行する必要があります。これは同じです。"\\[\\d+,\\d+\\]"\d

于 2013-02-07T11:03:13.880 に答える
0

一部の角かっこが失われるため、これは完全ではありませんが、少なくとも数字はそのままで、正しくグループ化されています。

String[] parts = mainstr.split("\\D,\\D");
于 2013-02-07T11:03:41.390 に答える
-1

検索しているパターン全体ではなく、']、['で分割することをお勧めします。これを試して:

String[] parts = mainstr.split("\\\\],\\\\["); // Never sure when to use double or quadruple slashes.

その後、ブラケットを交換する必要があるかもしれません。

于 2013-02-07T11:00:27.653 に答える