2016-12-06 4 views
1

私はjavaでいくつかの基本的なURLマッチングを行う必要があります。私はここでURLがパターンに合っているかどうかを確認するJavaメソッド

/users/*/roles 

は私が探してと私が試したのですものです

/users/5/roles 

試合を言って、trueを返します方法を必要としています。

public Boolean fitsTemplate(String path, String template) { 
    Boolean matches = false; 
    //My broken code, since it returns false and I need true 
    matches = path.matches(template); 
    return matches; 
} 
+0

Antマッチャーが必要なようです。これに利用できるライブラリがあります。 – chrylis

+0

'users/5/6/7/roles'には何を返すべきですか? [String.matches()](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#matches(java.lang.String))は、正規表現 '/ users/[0-9] +/roles'が動作するはずです。 –

+0

@JohnBupit false – JellyRaptor

答えて

1

1つのオプションは、このような[^/]+として正規表現と同等のいくつかの種類に*を交換することであるが、ここで使用されているパターンの種類は、実際には「グロブ」パターンと呼ばれています。 Java 7以降では、FileSystem.getPathMatcherを使用して、ファイルパターンとglobパターンを一致させることができます。 glob構文の詳細については、getPathMatcherのマニュアルを参照してください。

public boolean fitsTemplate(String path, String template) { 
    return FileSystems.getDefault() 
         .getPathMatcher("glob:" + template) 
         .matches(Paths.get(path)); 
} 
+0

はい、これは完璧です。 GulpのようなJavascriptタスクランナーへの私の暴露からのurl/pathの照合に関しては、 "glob"という用語を覚えています。これは常にグロブを使って一致するパターンを伝える。 – JellyRaptor

関連する問題