2011-10-27 24 views
0

私はこの正規表現[a-zA-Z]\d\d\\$\d\d-\d\d\d\dを持っていて、私の値はA11$12-9190です。しかし、それは一致していません。すべての手がかりは?RegexがJavaで動作しない

+0

正規表現は無効です。 –

+0

使用している実際のJava文字列は何ですか? – millimoose

+0

$の前に\をエスケープしていますので、文字列の最後に達していますが、その後はさらに数字を探しています。ありえない。 – FailedDev

答えて

4

各バックスラッシュ\は、追加のバックスラッシュ(\\)をJavaパターンでエスケープする必要があります。ドル記号の前のバックスラッシュはすでにエスケープされていることに注意してください。

結果の正規表現は次のようになります。

[a-zA-Z]\\d\\d\\$\\d\\d-\\d\\d\\d\\d 
0

すべて\をエスケープしていますか?文字列がある場合は、"\\d"を実行する必要があります。

1

あなたの正規表現は無効です。エスケープ二\をエスケープするために最初の\ - 例えば、

String test = "A11$12-9190"; 
    String regex = "[a-zA-Z]\\d\\d\\$\\d\\d-\\d\\d\\d\\d"; 

    System.out.println(test.matches(regex)); 
2

基本的に何が起こっているのは、Javaがあなたの\ dは文字列のエスケープ文字である、あなたはD \\にそれを変換する必要がありますと仮定していることです正規表現のためのd!

関連する問題