2017-02-01 5 views
-1

これで、正規表現を使っていくつかのドッカー画像を解析しようとしています。 だから、私は文字列のリストを持って、それぞれが次のようになります。         最新          62d1673065e8           12週間前          1.941ギガバイト正規表現でドッカー画像を解析する

bamos/openface

  • bamos/openface - >リポジトリ
  • 最新 - >タグ
  • 62d1673065e8 - >画像ID
  • 12週間前 - >作成した
  • 1.941ギガバイト - >サイズ

私がしようとしているのは、その文字列に "bamos/openface"と "Latest"の両方が含まれているかどうかを確認することです。だから、基本的に私は特定のリポジトリとそのタグをチェックする必要があります。文字列に文字列が含まれている場合は、別の文字列で(イメージID)を取得する必要があります

どうすればこのパターンマッチングを設定できますか?

^bamos\/openface\h+latest\h+([a-z0-9]+) 

See the regex demo here

あなたの画像IDがグループ1で利用できるようになります:あなたはちょうどマッチをテストするために、あなたのパターン内の文字列を追加し、このようなグループ内の画像のIDをキャプチャする必要が

答えて

1

文字列が一致する場合。コードの例以下を参照してください。

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

String regex = "^bamos\\/openface\\h+latest\\h+([a-z0-9]+)"; 
String string = "bamos/openface  latest  62d1673065e8  12 weeks ago  1.941 GB\n" 
    + "other/repository  latest  22d1673065e8  12 weeks ago  1.941 GB\n" 
    + "bamos/openface  previous  77d1673065e8  12 weeks ago  1.941 GB"; 

Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE); 
Matcher matcher = pattern.matcher(string); 

while (matcher.find()) 
    System.out.println(matcher.group(1)); 

この例では、最初の

See the Java code demo

+0

用画像IDを出力し、それは完璧です。そんなにたくさんありがとう! regex101のウェブサイトは正規表現について学ぶのに素晴らしい場所です。 – Acidburn73

+0

@ Acidburn73です。 :)しかし注意してください:ここでは、if(matcher.find())だけを使ってうまくいくのは、一致する可能性が1つしかないからです。一度にすべての行をテストするなら、 'while'を使うことを検討してください。私は私の答えを更新しています。 – Niitaku

+0

大丈夫です(Y)。再度、感謝します。 – Acidburn73