3

誰でもこのコードのエラーを見つけることができますか?

    String value = "/files/etc/hosts/*";
    if (value.matches("\\*$")) {
        System.out.println("MATCHES!");
    }

文字列の最後の文字がアスタリスクの場合、何らかの操作を実行しようとしています。

構文は正しいように見えます。http://regexpal.com/でテストしました

前もって感謝します!

4

3 に答える 3

16

なぜ使用しないのですか:

if (value.endsWith("*")) {
于 2013-06-14T16:39:26.787 に答える
6

String.matches() は、正規表現が CharSequence 全体と一致する場合にのみ true を返します。

次のいずれかを試してください。

value.matches(".*?\\*$")

または、Pattern オブジェクトを使用します。

編集:コメントリクエストごと。

Pattern glob = Pattern.compile("\\*$");
if (glob.matcher(value).find()) {
    System.out.println("MATCHES!");
}
于 2013-06-14T16:36:26.853 に答える
3

Stringを使用する場合は、すべてを一致させる必要がありますString#matches

if (value.matches(".*\\*$")) {
于 2013-06-14T16:36:14.150 に答える