0

そのため、Java で AWS SDK を使用しており、S3 サーバーにあるバケット/オブジェクトをダウンロードするクラスを作成しました。

私が今必要としているのは、ワイルドカードまたはパターンのようなものを作成して、たとえば ("reports") という名前の文字列を追加することです。私が思いついた唯一のことは、次のようなパターンマッチャー変数を作成することです:

 Pattern p = Pattern.compile("[a-zA-Z][0-9]");
    Matcher m = p.matcher(prePattern);

    ObjectListing s3ObjectList = s3client.listObjects(new ListObjectsRequest()
                                               .withBucketName(bucketName)
                                               .withPrefix(m  + "reports"));+

私がやろうとしていることでより良い解決策があるかどうか、または私がそれを適切に行ったかどうか、誰か教えてください。

ありがとう!


新しいコード:

      String bucketName = "blabla";
      String prePattern = "^[a-z0-9_-]{1,30}$";
      String prefixPat = " -- Insert Pattern Here -- ";
      ArrayList<String> objPrefix = new ArrayList();

    Pattern p = Pattern.compile(prePattern);
    Matcher m = p.matcher(prefixPat);

    for(int i=0; i<= objPrefix.size(); i++)
   {
        objPrefix.add(m + "reports");
        ObjectListing s3ObjectList = s3client.listObjects(new ListObjectsRequest()
                                               .withBucketName(bucketName)
                                               .withPrefix(objPrefix.get(i)));

   }   

皆さん、どう思いますか?本当に感謝します。ありがとう!

4

1 に答える 1

1

AWS についてはよくわかりませんがm + "reports"、コードの一部はそれを呼び出しm.toStringて、文字通りの「レポート」と連結しています。通常、Matcher オブジェクトの toString はあまり役に立ちません。

このコードから:

Pattern p = Pattern.compile("[a-zA-Z][0-9]");
Matcher m = p.matcher("test");
System.out.println( m +  "reports" );

OS Xでこれを取得します:

 java.util.regex.Matcher[pattern=[a-zA-Z][0-9] region=0,4 lastmatch=]reports

おそらくあなたが伝えたいものではないでしょうObjectListing

m +を、コードにとってより意味のあるものに置き換える必要があります。

于 2012-04-04T00:26:04.210 に答える