2016-08-19 4 views
0

私は、ステートメントからメトリクスのような値を抽出できる正規表現に苦労しています。抽出200x500ピクセル 正規表現を使用した寸法測定値の抽出

  • 画像のピクセルぼかし200×500 - - 200×500
  • 100.22 X 200.55 Xを抽出

    1. 画像のピクセル200x500ピクセルブラー:

      サンプルの質問:以下は、私が遭遇したいくつかのサンプルがあります90.55 mmはハンドバスのサイズ - 100.22 x 200.55 x 90.55 mm

    2. 携帯電話の寸法は100.22x200.55x90.55 mmです。インデックス

      • :0 - 上記のコードから

        String str_array[] = new String[4]; 
         
        \t \t str_array[0] = "Image pixel 200x500 px blur"; 
         
        \t \t str_array[1] = "Image pixel 200 x 500 blurring"; 
         
        \t \t str_array[2] = "100.22 x 200.55 x 90.55 mm is the size of the handphone"; 
         
        \t \t str_array[3] = "The mobile phone is 100.22x200.55x90.55 mm in dimension."; 
         
        \t \t for (int i=0;i<str_array.length;i++){ 
         
        \t \t \t Pattern pty_resolution_ratio_metrics_try = Pattern.compile("(\\d+)[\\.\\d]+(\\s*)x"); 
         
        \t \t \t Matcher matcher_value_metrics_error_try = pty_resolution_ratio_metrics_try.matcher(str_array[i]); 
         
        \t \t \t while (matcher_value_metrics_error_try.find()) { 
         
        \t \t \t \t System.out.println("index: "+i+"-"+matcher_value_metrics_error_try.group(0)); 
         
        \t \t \t } 
         
        \t \t }

        結果を次のように100.22x200.55x90.55ミリ

    これまで私のコードを抽出します-200x

  • インデックス:1-200x
  • 指数:2から100.22のx
  • 指数:2から200.55のx
  • インデックス:3-100.22x
  • インデックス:3-200.55x
  • 任意の正規表現の提案ですか?これについて助けが必要です。

    ありがとうございます!

    +0

    同じパターンを再コンパイルする必要はありません。それを静的な最終にする。 – EJP

    答えて

    0

    できるのは、この正規表現:????

    ((?:\\d[\\d\\s\\.x]+\\d)(?:\\s*(?:px|mm))?) 
    

    この正規表現は2桁の数字、スペース、ピリオド、およびxをすべて検索します。番号に続いてpxまたはmmを確認します。

    あなたはすべてが正しい順序(数字の間にスペースなし)であることを確認するためにチェックする正規表現を使用でき代わりに、次のうち

    ((?:(?:[\\d\\.]+)(?:\\s*x\\s*(?:[\\d\\.]+))+)(?:\\s*(?:px|mm))?) 
    
    public static void main(String[] args) { 
    
        String texts[] = {"Image pixel 200x500 px blur", 
         "Image pixel 200 x 500 blurring", 
         "100.22 x 200.55 x 90.55 mm is the size of the handphone", 
         "The mobile phone is 100.22x200.55x90.55 mm in dimension"}; 
    
        String regex = "((?:\\d[\\d\\s\\.x]+\\d)(?:\\s*(?:px|mm))?)"; 
    
        Pattern p = Pattern.compile(regex); 
    
        for (int q = 0; q < texts.length; q++){ 
         Matcher m = p.matcher(texts[q]); 
         while (m.find()){ 
          System.out.println(m.group()); 
         } 
        } 
    } 
    

    プリント:

    200x500 px 
    200 x 500 
    100.22 x 200.55 x 90.55 mm 
    100.22x200.55x90.55 mm 
    
    +0

    ご協力いただきありがとうございます。できます! –

    0
    public static void getDimensions(String text) { 
        Pattern pattern = Pattern.compile("((\\d+.?\\d+)(\\s?)x?\\s?)+"); 
        Matcher matcher = pattern.matcher(text); 
        while (matcher.find()) { 
         System.out.println("Index: " + matcher.start()+" Found: " + matcher.group()); 
        } 
    
    } 
    

    @ngrjは、あなたが以下にそれを修正することができ略語を印刷するために、追加したものに追加この1

    0

    をお試しください:

    Pattern.compile( "((\ D +。? ?\ dは+)(\ sの)Pのx \ S(ミリメートル))+ ")

    関連する問題