import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Ideone
{
{
final String regex
= "(?:^(Mammals?|Reptiles?|Birds?)|\\G(?!^))\\h+(\\d+(?:\\.\\d+)?)"; final String string
= "Example 1:\n" + "March\n"
+ " Morning Evening\n"
+ " (Avg Count) (Avg Count)\n"
+ "Birds 5.6 10.35\n"
+ "Mammals 2.0 3.3\n\n\n"
+ "Example 2:\n"
+ "March\n"
+ " Morning Afternoon Evening\n"
+ " (Num) (Num) (Num)\n"
+ "Birds 5.6 9 10\n"
+ "Mammals 2.0 2.5 3.3\n"
+ "Reptiles 1.0 5.6 1.75\n\n"
+ "Status Avg Total: Birds 24\n"
+ "Concerning that numbers have dwindled since last year\n\n"
+ "Example 3:\n"
+ " Early Mid Late \n"
+ " (Count) (Count) (Count)\n"
+ "Mammal 2.0 2.5 3.3 (Count)\n"
+ "Reptile 1.0 5.6 1.75 (Count)";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
if (matcher.group(1) != null) {
System.
out.
println("Row name : " + matcher.
group(1)); }
if (matcher.group(2) != null) {
System.
out.
println("Numbers : " + matcher.
group(2)); }
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOwoKY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWZpbmFsIFN0cmluZyByZWdleCA9ICIoPzpeKE1hbW1hbHM/fFJlcHRpbGVzP3xCaXJkcz8pfFxcRyg/IV4pKVxcaCsoXFxkKyg/OlxcLlxcZCspPykiOwoJCWZpbmFsIFN0cmluZyBzdHJpbmcgPSAiRXhhbXBsZSAxOlxuIgoJCQkgKyAiTWFyY2hcbiIKCQkJICsgIiAgICBNb3JuaW5nICAgICBFdmVuaW5nXG4iCgkJCSArICIgICAgKEF2ZyBDb3VudCkgKEF2ZyBDb3VudClcbiIKCQkJICsgIkJpcmRzICAgIDUuNiAgICAgICAgICAxMC4zNVxuIgoJCQkgKyAiTWFtbWFscyAgMi4wICAgICAgICAgIDMuM1xuXG5cbiIKCQkJICsgIkV4YW1wbGUgMjpcbiIKCQkJICsgIk1hcmNoXG4iCgkJCSArICIgICAgTW9ybmluZyAgIEFmdGVybm9vbiBFdmVuaW5nXG4iCgkJCSArICIgICAgIChOdW0pICAgICAoTnVtKSAgICAgKE51bSlcbiIKCQkJICsgIkJpcmRzICAgIDUuNiAgICAgICA5ICAgICAgICAxMFxuIgoJCQkgKyAiTWFtbWFscyAgMi4wICAgICAgIDIuNSAgICAgIDMuM1xuIgoJCQkgKyAiUmVwdGlsZXMgMS4wICAgICAgIDUuNiAgICAgIDEuNzVcblxuIgoJCQkgKyAiU3RhdHVzIEF2ZyBUb3RhbDogQmlyZHMgMjRcbiIKCQkJICsgIkNvbmNlcm5pbmcgdGhhdCBudW1iZXJzIGhhdmUgZHdpbmRsZWQgc2luY2UgbGFzdCB5ZWFyXG5cbiIKCQkJICsgIkV4YW1wbGUgMzpcbiIKCQkJICsgIiAgICBFYXJseSAgICAgTWlkICAgICAgIExhdGUgXG4iCgkJCSArICIgICAgKENvdW50KSAgIChDb3VudCkgICAoQ291bnQpXG4iCgkJCSArICJNYW1tYWwgICAyLjAgICAgICAgMi41ICAgICAgMy4zICAoQ291bnQpXG4iCgkJCSArICJSZXB0aWxlIDEuMCAgICA1LjYgICAgICAxLjc1ICAoQ291bnQpIjsKCQkKCQlmaW5hbCBQYXR0ZXJuIHBhdHRlcm4gPSBQYXR0ZXJuLmNvbXBpbGUocmVnZXgsIFBhdHRlcm4uTVVMVElMSU5FKTsKCQlmaW5hbCBNYXRjaGVyIG1hdGNoZXIgPSBwYXR0ZXJuLm1hdGNoZXIoc3RyaW5nKTsKCQkKCQl3aGlsZSAobWF0Y2hlci5maW5kKCkpIHsKCQkJaWYgKG1hdGNoZXIuZ3JvdXAoMSkgIT0gbnVsbCkgewoJCQkJU3lzdGVtLm91dC5wcmludGxuKCJSb3cgbmFtZSA6ICIgKyBtYXRjaGVyLmdyb3VwKDEpKTsKCQkJfQoJCQlpZiAobWF0Y2hlci5ncm91cCgyKSAhPSBudWxsKSB7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIk51bWJlcnMgOiAiICsgbWF0Y2hlci5ncm91cCgyKSk7CgkJCX0KCQl9Cgl9Cn0=