2016-12-20 5 views
0

JPA仕様でRESTfulクエリを実装しています。このようになります複数の条件でURLを処理したいと思います:この正規表現のパターンマッチングが動作しない理由

http://localhost:8080/samples?search=lastName:doe,age>25

検索文字列は「」で区切られたパターン(\\w+?)(:|<|>)(\\w+?)にマッチします。

したがって、私は、文字列からのMatcherを取得するために、次のコードを書いた:

static Matcher getMatcherFromString(String str) {                                                                                                                                                                         
    Pattern pattern = Pattern.compile("(\\w+?)(:|<|>)(\\w+?),"); 
    Matcher matcher = pattern.matcher(str + ","); 
    return matcher; 
} 

この方法は、その後、URLを解析するために、コントローラに呼び出されます。

ただし、文字列analysisId:fdebfd6e-d046-4192-8b97-ac9f65dc2009を使用してメソッドをテストすると、nullが返されます。なぜパターンマッチングに間違っていたのですか?

+0

の\ w'は '-' – Fallenhero

+0

@Fallenhero' \ w'は言葉のためであると一致しない 'ので、私は思います。代わりに私は何を使うべきですか? – ddd

+0

私はあなたが好きなものを知りませんが、おそらく '[0-9a-zA-Z _-]'ですか? – Fallenhero

答えて

2

私は仕事にこれを得た:(W + \?)(:| < |>)[-ZA-Z0-9 \に - ] *、

を、私はそれを把握するためにこれを使用:https://regex101.com/r/fOEzd9/1

私は主な問題は数字が\ wが単語として一致しないことだと思います。また、ダッシュを考慮する必要があります。

+0

魅力的な作品です。ありがとう。 – ddd

0

私は同じ問題を抱えていたと私は、この文字列を使用して解決:

"(\\w+?)(:|<|>)(\\w+?)," 
関連する問題