2016-11-22 13 views
0

これは私のマッパーのコードです。マッパーの間違った正規表現

result.put("contentThumbUrl", getThumbUrl(extractor.extract("youtube.videolink").asText(), false)); 
      result.put("contentThumbSmallUrl", getThumbUrl(extractor.extract("youtube.videolink").asText(), true)); 

My機能は次のとおりです。

private String getThumbUrl(String videoId, boolean small) { 
     videoId = videoId.replaceAll("http://www\\.youtube\\.([a-z]{2}|[a-z]{3})/watch\\?v=.|https://www\\.youtube\\.([a-z]{2}|[a-z]{3})/watch\\?v=", ""); 
     if(small) { 
      return "http://img.youtube.com/vi/" + videoId + "/2.jpg"; 
     } 
     return "http://img.youtube.com/vi/" + videoId + "/0.jpg"; 
    } 

は、しかし、私は偽の結果を得ました。

"contentThumbSmallUrl":"http:\/\/img.youtube.com\/vi\/https:\/\/www.youtube.com\/watch?v=lEBwKBJ8Leg\/2.jpg" 
and 
contentThumbUrl":"http:\/\/img.youtube.com\/vi\/https:\/\/www.youtube.com\/watch?v=lEBwKBJ8Leg\/0.jpg" 

とにかく修正できますか。私は正規表現が正しいかどうかわかりません。正規表現を短くする方法はありますか?

答えて

0

なぜそれがそのテキストで失敗するのかわかりません。それはエスケープされたスラッシュ(\/)で、奇妙に見えます。バックスラッシュ(\)のみをエスケープする必要があります。入力を確認してください。

私が見ることができる唯一の問題は、最初の半分の後に余分な期間(.)です:\\?v=.|https://。ビデオIDから余分な文字が削除されます。

"http(s)?://www\\.youtube\\.([a-z]{2,3})/watch\\?v=" 

カッコはオプションですが、エイズの読みやすさ:

パターンを短縮するために、あなたはこれを行うことができます。

デモ:https://regex101.com/r/9gRG8Q/1

関連する問題