次の正規表現(([\w/]+):\s?(\d+)),?
を使用して、文字列内のすべてに一致させてから、とでkey:value
抽出GOALS
することができます。group(2)
3
group(3)
正規表現は次のようになります。
( # capture key/value (without the comma)
( # capture key (in group 2)
[\w/]+ # any word character including / one or more times
)
: # followed by a colon
\s? # followed by a space (or not)
( # capture value (in group 3)
\d+ # one or mor digit
)
)
,? # followed by a comma (or not)
文字列を考慮すると、次のように一致する必要があります。
PLAYED: 13
GOALS: 3
ASSISTS: 6
POINTS: 9
PLUS/MINUS: 5
PIM: 7
Javaコードは次のとおりです。
String s = "Brayden Schenn, C GAMES PLAYED: 13, GOALS: 3, ASSISTS: 6, POINTS: 9, PLUS/MINUS: 5, PIM: 7";
Matcher m = Pattern.compile("(([\\w/]+):\\s?(\\d+)),?").matcher(s);
Map<String, Integer> values = new HashMap<String, Integer>();
// find them all
while (m.find()) {
values.put(m.group(2), Integer.valueOf(m.group(3)));
}
// print the values
System.out.println("Games Played: " + values.get("PLAYED"));
System.out.println("Goals: " + values.get("GOALS"));
System.out.println("Assists: " + values.get("ASSISTS"));
System.out.println("Points: " + values.get("POINTS"));
System.out.println("Plus/Minus: " + values.get("PLUS/MINUS"));
System.out.println("Pim: " + values.get("PIM"));