2017-09-19 8 views
1

だから私は、文字列を分割する必要があります。正規表現:スプリット名前で文字列、重量/カウント、および価格

Laundry Detergent    2X Ultra Free Clear         50 oz   11.99 

の中へ:

Laundry Detergent    2X Ultra Free Clear 

50 oz 

11.99 

私がこれまで持っている最高のthisです。この 文字列でも機能しないことは理解していますが、別の文字列を分ける必要があります。これは私がうまくいかないストリングの一つです。

いくつかの例の文字列:

Ravioli       Beef            15 oz   1 
Pear Halves      100% Juice           15 oz   1.3 
Gatorade       Sports Drink          8/20 oz  5.48 
+0

あなたがこの中に特定のパターンを発見したことがありますか?数量と価格がどのように表されるのか? (数値、小数点付き、単位付き、最後...)。あなたがしなかった場合は、すぐにあなたの質問の方法を投稿しています。 – AxelH

+0

個人的には、フィールド区切り文字(たぶんタブまたは複数のスペース)で区切り、必要に応じて再フォーマットします。 –

+0

@ScaryWombatどうやってこのことを考えていますか? – Cow

答えて

1

あなたがこのアプローチを試みる可能性があります(run here

final String regex = "^((?:\\S+\\s?)+)\\s{2,}((?:\\S+\\s?)+)\\s{2,}((?:\\S+\\s?)+)\\s{2,}(\\d+(\\.\\d+)?)$"; 
    final String string = "Laundry Detergent   2X Ultra Free Clear    50 oz   11.99\n" 
     + "Ravioli     Beef        15 oz   1\n" 
     + "Pear Halves    100% Juice      15 oz   1.3\n" 
     + "Gatorade     Sports Drink      8/20 oz  5.48"; 

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

    int cnt=1; 
    while (matcher.find()) { 
      System.out.println("###### result #######"+cnt++); 
      System.out.println("Group " + 1 + ": " + matcher.group(1)); 
      System.out.println("Group " + 2 + ": " + matcher.group(2)); 
      System.out.println("Group " + 3 + ": " + matcher.group(3)); 
      System.out.println("Group " + 4 + ": " + matcher.group(4)); 
     } 

Output: 
###### result #######1 
Group 1: Laundry Detergent 
Group 2: 2X Ultra Free Clear 
Group 3: 50 oz 
Group 4: 11.99 
###### result #######2 
Group 1: Ravioli 
Group 2: Beef 
Group 3: 15 oz 
Group 4: 1 
###### result #######3 
Group 1: Pear Halves 
Group 2: 100% Juice 
Group 3: 15 oz 
Group 4: 1.3 
###### result #######4 
Group 1: Gatorade 
Group 2: Sports Drink 
Group 3: 8/20 oz 
Group 4: 5.48 
+0

なぜdownvote ...理由を知りたいと思いますか –

関連する問題