正規表現の有無にかかわらず、下記の2つのタスクをどのように達成するかを比較してください。問題:;何度も繰り返される特定のグループをキャプチャするため
SMSベースの食品の配達のための形式は次のようになります。
PABUSOGスラッシュまたはカンマ量は数値のみ可能
// @無限の回数を繰り返しました。簡略化のために、量は常に整数であると仮定する。
PABUSOG STRFRY_SMAI/En311
@ 2 HSHBRWN_BRGR/1 COFEEFLT/1、それは次のことをキャプチャします:
STRFRY_SMAI - 2 HSHBRWN_BRGR - 1 COFEEFLT - 1
これは私のサンプルコードです://やっ正規表現
String message = "PABUSOG ASD_ASD/1 ASD_ASA/2";
Pattern pattern = Pattern.compile("PABUSOG(\\s+([A-Z]+_[A-Z]+)(/|,)([0-9]))+"
,Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(message);
try
{
if (m.matches())
{
String food = m.group(2);
String quantity = m.group(4);
System.out.println(food + " -- " + quantity + "\\n");
}
}
catch (NullPointerException e)
{
}
ではASD_ASA表示 - 2を、それがASD_ASD/1である第1を上書き。
それは
ASD_ASD表示しなければなりません - 1
ASD_ASA - 2
は動作していないようです。 – tddiaz
あなたの例を使って作業する必要があります。 Groovy Consoleでこれをチェックしたのでコンパイルに問題が生じることがありますが、その原則は正しいです。これらのスニペットではどのような問題が発生しましたか? – Rorick
TestNG Javaユニットテストでチェックしました。両方のスニペットは、2つの例で動作します。 2番目のスニペットは答えが – Rorick