0

私は他の質問を見ましたが、それらは私を答えに導きませんでした。

私はこのコードを持っています:

Pattern p = Pattern.compile("exp_(\\d{1}-\\d)-(\\d+)");

照合したい文字列は次のとおりです。exp_5-22-718

5-22抽出したいのですが718。なぜ機能しないのかよくわかりません。何が欠けていますか?どうもありがとう

4

4 に答える 4

1

文字列に常に接頭辞が付いている場合exp_、正規表現は使用しません。

私は...するだろう:

注:この回答は仮定に基づいています。複数のハイフンがある場合は、より堅牢なものとして提供します。ただし、数字の形式を検証する必要がある場合は、正規表現の方が適している場合があります。

于 2012-12-03T15:51:34.570 に答える
1

これを試してください:

Pattern p = Pattern.compile("exp_(\\d-\\d+)-(\\d+)");

元のパターンでは、2 番目の数字には 1 桁の数字を含めるように指定したので、できるだけ\d+多くの数字を一致させるようにしました。{1}また、正規表現に値を追加しないため、最初の数値定義から削除しました。

于 2012-12-03T15:54:42.777 に答える
1

正規表現で、2 桁目に必要な量指定子がありませんでし\\dた。この量指定子は+または{2}です。

    String yourString = "exp_5-22-718";

    Matcher matcher = Pattern.compile("exp_(\\d-\\d+)-(\\d+)").matcher(yourString);
    if (matcher.find()) {
        System.out.println(matcher.group(1)); //prints 5-22
        System.out.println(matcher.group(2)); //prints 718
    }
于 2012-12-03T15:56:14.650 に答える
1

これを行うには、string.split メソッドを使用できます。次のコードを確認してください。あなたの文字列は「exp_」で始まると思います。

    String str = "exp_5-22-718";
    if (str.contains("-")){
        String newStr = str.substring(4, str.length());
        String[] strings = newStr.split("-");

        for (String string : strings) {
            System.out.println(string);
        }
    }
于 2012-12-03T16:00:25.533 に答える