2017-09-30 16 views
-1

私は以下の経路/ path1/path2/{value1}/path3/{value2}を持っており、要求経路がpath1とpath2に合致するかどうかを調べようとしています。 {value1}と{value2}は変更されます。javaのregexを使ってurlのパラメータを無視する

これは私が持っているものであるが、その一致しません:

@Test 
public void testURLMatches() { 
    String input = "/path1/path2/123/path3/456"; 
    Pattern pattern = Pattern.compile("\\/path1\\/path2\\/([a-zA-Z0-9]{0,})\\/path3\\/([a-zA-Z0-9]{0,})"); 
    Matcher matcher = pattern.matcher(input); 
    if (matcher.find()) { 
     System.out.println("Does match!"); 
    } else { 
     System.out.println("Does not match!"); 
    } 
    assertTrue(matcher.find()); 
} 

編集1: もともと

+0

ご質問はありますか? – jeanr

+0

[split(String regex)](http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-)? – dawg

+0

正規表現が動作するようにしたいのですが、基本的にURLが/ path1/path2/123/path3/456のように正規表現に一致するようになるとします。この正規表現が私が知らないように見える方法。 \\/path1 \\/path2([a-zA-Z0-9] {0、})\\/path3 \\ /([a-zA-Z0-9] {0、}) )が動作していない – otc

答えて

3

がありませんでした\ /パターンで追加された私は、あなたが見ている正規表現が

だと思います
^\/path1\/path2\/([\w]+)\/path3\/([\w]+)$ 

PS:テストではもう1つの問題がありますが、matcher.find()関数を2回呼び出すのに対し、一度呼び出す必要があります。 if条件を削除します。

Javaでは、あなたが得る

@Test 
public void testURLMatches() { 
    String input = "/path1/path2/123/path3/456"; 
    Pattern pattern = Pattern.compile("^\\/path1\\/path2\\/([\\w]+)\\/path3\\/([\\w]+)$"); 
    Matcher matcher = pattern.matcher(input); 
    assertTrue(matcher.find()); 
} 

example

+0

Javaで「^ \\/path1 \\/path2 \\ /([\\ w] +)\\/path3 \\ /([\\ w] +)$ "でも、やっていませんでした。 – otc

+0

@otc上記のテストは私のためにうまく働いています – jeanr

+0

ちょうどそれがうまくいった。私はmatcher.findを2回呼び出すことと何かがあったと思う。 – otc

1

あなたが/後に必要があるため、あなたのパターンが一致しません:/パス2、これを試してみて、それが動作します:

string input = "/path1/path2/123/path3/456"; 
string pattern = @"\/path1\/path2\/[a-zA-Z0-9]{0,}\/path3\/[a-zA-Z0-9]{0,}"; 

Match m = Regex.Match(input, pattern, RegexOptions.IgnoreCase); 
if (m.Success) 
{ 
    // match 
} 
else 
{ 
    // not match 
} 

{Value}に許容される値は何ですか?それでも、これを使用することもできます:

\/path1\/path2\/[\w]*\/path3\/[\w]* 

[\ w] *:任意の英数字の文字が表示されます

+0

{value1}または{value2}は、実行時に何かに置き換えることができます。 – otc

+0

はい、私が意味するものは、どのようなタイプのcharが値に許されていたかです:あなたの正規表現はアルファベットと数字をキャプチャしています。または〜または - など – Sarhang

関連する問題