0

これはほぼ同じ名前の質問の複製であることは知っていますが、Androidで動作させることはできません!

私はこれを試しています: シンボルに一致する正規表現:

public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\\";'<>?,.\/]");

ただし、これは機能しません。このパターンを適用する正しい方法を知っている人はいますか?

PS Regex で noob を完了します。:D

元はここから -シンボルに一致する正規表現: !$%^&*()_+|~-=`{}[]:";'<>?,./

エラーメッセージ:Syntax error on token(s), misplaced construct(s)

更新: 余分なバックスラッシュを追加しました...多くの em を修正し、;以降エラーが発生するようになりました。エクリプスを使用。

4

3 に答える 3

4

あなたの問題は「

public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]");
                                                                  ^

文字列を終了しているので、エスケープする必要があります。また、スラッシュの前のバックスラッシュを削除する必要があります。これは特殊文字ではありません。

public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,./]");

OK、もう一度、スラッシュをエスケープするのではなく、バックスラッシュを一致させたかったので、ここで終了します。

public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");

今ではjdbと同じ答えなので、より速いことで彼に+1します。

于 2013-01-25T09:09:04.917 に答える
3

どのようにそのことについて?

Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");
于 2013-01-25T09:14:41.770 に答える
1

文字クラスでは、[とだけ]が特別な意味を持つため、エスケープする必要があります。さらに Java では、追加のバックスラッシュでエスケープする必要があります。それは特にJavaの問題です。したがって、 と を使用する必要があり\\[ます\\]"はい、文字列リテラルでは単一のバックスラッシュでエスケープする必要があります。

それとは別に、途中で使用されるハイフンにも特別な意味があります。を一致させたい場合hyphenは、最後に使用する必要があります。

残りの文字は、エスケープする必要はありません。彼らはただの普通のキャラクターです。

したがって、パターンは次のようになります。

Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,./]");

また、一致させたい場合はbackslash (\)、これを使用します: -

Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");
于 2013-01-25T09:19:03.920 に答える