2013-04-23 7 views
7

\または/のいずれかと一致する正規表現を作成しようとしています。書き込み:[ /](または/正規表現)は正しくですか?

私はそれを書いたものために、どんなに:

[//\] 

または

[/\\] 

それは何とか私の角括弧や私のスラッシュのいずれかを脱出されます。この特定のケースを示す正しい方法は何ですか?

+0

私は気付いたので、私は '[\\ /]'や '[/ \\]'と書いていましたが、ほとんどの人がそれを手に入れました。私は私の答えを編集しません。なぜなら、以下の答えは私の間違いを参照し、私はユーザーを混乱させたくありません。誰かがそれを持っていれば、これは私の論理に疑いを抱くようなことを望みます。 –

答えて

10

はい、2番目の正規表現の閉じ括弧をエスケープしています。最初の正規表現は文字列としてコンパイルされません。あなたは問題の

"[/\\\\]" 

あなたの正規表現の両方が平野正規表現正しいたい。ただし、正規表現はJava文字列リテラル内で指定されているため、\を指定するには、\\からエスケープする必要があります。したがって、最終的には"[/\\\\]"または"[\\\\/]"となります。

要約すると、\を正規表現に正しく指定するには、\\をエスケープする必要があります。また、Java文字列リテラルに\\を正しく指定するには、別のレイヤーにエスケープする\\\\を追加する必要があります。

+3

'\ literal \を正規表現で書く必要があります。\\\\。'いいえ '' \\ ''で十分です。その理由は、Javaリテラル文字列でエスケープする別のレイヤーが必要なためです。 – nhahtdh

+0

あなたは正しいです、私はより良いフレーズにしようとしましょう。 – arshajii

+0

ありがとうございました!これは私が必要としていたものでした。 :D –