2010-12-27 5 views
2

私は文字列+6014456は「 +」正規表現カント日食のJava

のようなものと一致します"\++?"でチェックする必要があります。しかし、私はこのエラーメッセージをinvalid escape sequence (valid ones are \b \t \n \f \r \" \' \\)取得....なぜ?

+0

私はあなたの '.matches()'呼び出しをマッチさせて – wizztjh

+0

と書いています。あなたの実際の主張が何であるかは明らかではありません。 –

+0

InMessage.matches( "\ ++?") – wizztjh

答えて

7

作品"\++?"がリテラル有効なJavaではありませんので、それはあなたにエラーを与えている - あなたはバックスラッシュをエスケープする必要があります。これを試してみてください:

Pattern pattern = Pattern.compile("\\++?"); 

しかし、私はそれはあなたが望む実際正規表現だとは思いません。すなわち、少なくとも一つの数字が続くプラス、\+\d+の正規表現に対応し

Pattern pattern = Pattern.compile("\\+\\d+"); 

:あなたは、実際のようなものを意味するものではありません。

+0

ありがとう! "+01445676" .matches( "\\ + \\ d +") – wizztjh

1

2つのバックスラッシュを使用する必要があります。 2番目はエスケープ(java文字列なので)、2番目は+をエスケープする(正規表現の特殊文字なので)。

+0

oops、5秒:) – Nishant

+2

コミュニティのために、1分で3つの回答:) – fego

1

「\\ +」のようにはなりません。 ?


Pattern pattern = Pattern.compile("\\++?"); 
System.out.println(pattern.matcher("+9970").find()); 

私にとって