は私がJava正規表現を使用し始めていると私は、私はこの(不自然な例)のようなパターンを記述する必要が見つける:無効に文字列エスケープ(バックスラッシュ地獄)
C:\\\\windows\\\\system\\d+
が一致する
C:\windows\system32
正真正銘のバックスラッシュなしでjava正規表現を使用する方法はありますか?
は私がJava正規表現を使用し始めていると私は、私はこの(不自然な例)のようなパターンを記述する必要が見つける:無効に文字列エスケープ(バックスラッシュ地獄)
C:\\\\windows\\\\system\\d+
が一致する
C:\windows\system32
正真正銘のバックスラッシュなしでjava正規表現を使用する方法はありますか?
使用Pattern.quote(String s)
(ドキュメントのためにクリックしてください)
それが渡された文字列リテラル文字としてのすべてのメタ文字を扱います(しかし、あなたはまだ文字列リテラルの構築にバックスラッシュをエスケープする必要があります)。これにより、\\\\
の代わりに\\
と入力すると、実際の/リテラル\
を正規表現パターンで表すことができます。しかしこれは、他の特殊文字も文字通り同様に解釈されることを意味します(例では\d+
など)。
しかし、あなたの例では、あなたが使用できます。これで Pattern.quote("C:\\windows\\system") + "\\d+";
テストを:System.out.println("C:\\windows\\system32".matches(Pattern.quote("C:\\windows\\system") + "\\d+"));
いいえ、 –
はありませんあなたは(おそらくことを読んで、その後、別のファイルにそれらを救うことができますリソースとして)。 – yshavit