1

1 つの数字と 3 つの大文字を含み、合計の長さが 4 であるすべての単語を除外したいと思います。ここで私の例を参照してください: http://gskinner.com/RegExr/?32taa

ArrayList<String> result = new ArrayList<String>();


for(int i = 0; i <= 10; i++){

    String message = resp.data.get(i).message;

    Matcher m = MY_PATTERN.matcher("\b(?=[^\d]*\d[^\d]*)[A-Z\d]{4}\b");

        while (m.find()) {
            String s = m.group(1);
            result.add(s);
        }
}

しかし、正規表現パターンをマッチャー メソッドに渡すと、エラーが発生します。

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )

\d別の文字と交換する必要がありますか?

4

3 に答える 3

5

RegexString…とうまくいかない

したがって、\\d代わりに使用する必要があります\d

- \ Javaを書くとき、nまたはbまたはtまたはその他のいくつかを期待しますa...その後、しかし、それを与えるdと、その人生のショックを受け、一体何を考えます..私は何も知らない\dので、私たちはする必要がありますエスケープ文字として期待するのではなく、文字どおりに解釈する必要があることをJava に伝えます。\

-の場合"."(ドット) Java を指定すると、文字どおりに取得されますが、正規表現であるため、そのように見えるようにする必要があるため、プレフィックス を付けると、さらに複雑になります\\.以前の問題と同じ問題が次のように始まりますjava はnor betc を受け入れるよう\になりましたが、 を取得する"."ため、別のプレフィックスを再度付けて、次の\ようになります。\\.

于 2012-11-25T18:20:36.083 に答える
4

backslashJava では、文字列でパターンを表す場合、バックスラッシュを追加してエスケープする必要があります。

\bある必要があり\\b、 で\dある必要があります\\d

于 2012-11-25T18:20:27.790 に答える
3

コードには 2 つの問題があります。

正規表現パターンを使用

\\b(?=[A-Z]*\\d[A-Z]*\\b)[A-Z\\d]{4}\\b
于 2012-11-25T18:22:42.947 に答える