0

次の形式の文字列があります。

;1=2011-10-23T16:16:53+0530;2=2011-10-23T16:16:53+0530;3=2011-10-23T16:16:53+0530;4=2011-10-23T16:16:53+0530;

2011-10-23T16:16:53+0530文字列を検索する次のコードを作成しました(;1=2011-10-23T16:16:53+0530;)

Pattern pattern = Pattern.compile("(;1+)=(\\w+);");

String strFound= "";
Matcher matcher = pattern.matcher(strindData);
while (matcher.find()) {
   strFound= matcher.group(2);
}

しかし、期待どおりに機能していません。ヒントを教えてください。

4

3 に答える 3

4

ヒントを教えてください。

はい。ももも の一部-でもありません。:+\w

于 2012-02-05T14:05:29.427 に答える
3

正規表現を使用する必要がありますか? String.split()セミコロンの境界で文字列を分割するために呼び出してみませんか。次に、再度呼び出してチャンクを等号で分割します。その時点で、整数と文字列形式の日付が得られます。そこから、日付文字列を解析できます。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public final class DateScan {
    private static final String INPUT = ";1=2011-10-23T16:16:53+0530;2=2011-10-23T16:16:53+0530;3=2011-10-23T16:16:53+0530;4=2011-10-23T16:16:53+0530;";
    public static void main(final String... args) {
        final SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        final String[] pairs = INPUT.split(";");
        for (final String pair : pairs) {
            if ("".equals(pair)) {
                continue;
            }
            final String[] integerAndDate = pair.split("=");
            final Integer integer = Integer.parseInt(integerAndDate[0]);
            final String dateString = integerAndDate[1];
            try {
                final Date date = parser.parse(dateString);
                System.out.println(integer + " -> " + date);
            } catch (final ParseException pe) {
                System.err.println("bad date: " + dateString + ": " + pe);
            }
        }
    }
}
于 2012-02-05T14:27:05.593 に答える
1

入力を少し変更しましたが、プレゼンテーション上の理由から

これを試すことができます:

 String input = " ;1=2011-10-23T16:16:53+0530;   2=2011-10-23T16:17:53+0530;3=2011-10-23T16:18:53+0530;4=2011-10-23T16:19:53+0530;";

Pattern p = Pattern.compile("(;\\d+?)?=(.+?);");
Matcher m = p.matcher(input);

while(m.find()){
    System.out.println(m.group(2));
}
于 2012-02-05T14:36:51.407 に答える