1

次のような URI が与えられた場合:

/2013/03%20-%20March/15%20-%20Friday/1AC37325007

私は次のことを試しましたが、一致するようには見えません。

"/{year:\\d{4}}/{month:\\d{2}}\\s-\\s\\w+/{day:\\d{2}}\\s-\\s\\w+/{id:\\w{11}}"

一致しないのはmonthand式です。これは、 itの間のすべてをキャプチャするように変更する場合などです。しかし、数字部分のみを抽出する必要があるため、それはエレガントなソリューションではありません。day/{month}/{day}/

私をつまずかせているのは空白だと思います。%20一致させることも、一致させることもできません\s

4

2 に答える 2

-1

次のような構文{year:\\d{4}}は不正な繰り返しです。

Pattern p = Pattern.compile("{date:\\d}");

与えます:

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition
{date:\d}
    at java.util.regex.Pattern.error(Pattern.java:1713)
    at java.util.regex.Pattern.closure(Pattern.java:2775)

\\d{4}代わりに使用してみてください。

また、事前に文字列に対して URL デコードを実行し\\s-\\sないと一致しません%20-%20

式の一部を括弧で囲み、後でその部分のみをキャプチャできます

于 2013-05-28T23:13:08.493 に答える