入力文字列から名前付きデータを抽出する際、Matcher.group(String groupname) http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.htmlを使用します。
以下のコードでは、receivedData はグループの名前を持つハッシュマップです。各名前を取得するためにそれを反復処理してから、group(name) を呼び出す必要があります。ハッシュマップは個別に維持する必要があり、多数の名前があるため、名前が間違って入力されたり、正規表現の名前と同期しなくなる可能性があります。
String patternOfData = "On (day) I ate (mealName) at (restaurant) where they had a deal (entree) for only (price)";
パターンをコンパイルした後、
Pattern dataExtractionPattern = Pattern.compile(patternOfData);
Matcher matcher = dataExtractionPattern.matcher(receivedDataString);
boolean b = matcher.matches();
if (!b) {
return false;
}
for (String key : receivedData.keySet()) {
String dataValue;
dataValue = matcher.group(key);
receivedData.put(key, dataValue);
}
return true;
名前と値の両方が一緒に返された方がよいのではないでしょうか? Map.entry group(); と同様です。
または、これを行う別の方法はありますか?