はエスケープする必要がないものをエスケープしないでください:
return expression.matches("[-+*/^]+");
はうまく動作するはずです。文字クラスで使用すると、ほとんどの正規表現メタキャラクタ(.
、(
、)
、+
、*
など)は特別な意味を失います。注意が必要なのは、[
,-
、^
、および]
です。
^
は右開きブラケットの後を除いてどこにでも配置することができます:[a^]
-
に配置することができ、彼らは特別な意味を取ることはありませんので、最後の3のために、あなたは戦略的にそれらに文字クラスを配置することができます[-a]
又は[a-]
]
右開口ブラケットの後に配置することができる:右開口ブラケット後、または右閉鎖ブラケット前[]a]
しかし、あなたは正規表現文字列にエスケープ文字としてバックスラッシュを含める必要がある場合は、今後の参考のために、あなたは例えば、二回それをエスケープする必要があります:
"\\(.*?\\)" // match something inside parentheses
だから、文字通りのバックスラッシュを一致させるために、あなたの」 Dの必要性それらの4:
"hello\\\\world" // this regex matches hello\world
別のノート:String.matches()
は、あなたの文字列は、オペレータのちょうど束で構成されていない限り、あなたがする必要がありますので、パターンに対して全体文字列にマッチしようとします代わりに.matches(".*[-+*/^].*");
のようなものを使用してください(またはMatcher.find()
を使用)
私は、プラスまたはマイナスまたはアスタリスク」と表示されます。これを明確にしてくれてありがとう! – WebChemist