import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.ArrayList;
class Ideone
{
{
String regex
= "#Section(\\d+)\\b(?:(?!#Section\\d).)*\\bJack/M,(\\d+\\h+[-+]?\\d+(?:\\.\\d+)?(?:\\s+\\d+\\h+[-+]?\\d+(?:\\.\\d+)?)*)"; String string
= "#Section250342,Main,First/HS/12345/Jack/M,200010 10.00 200011 -2.00,\n" + "#Section250322,Main,First/HS/12345/Aaron/N,200010 17.00,\n"
+ "#Section250399,Main,First/HS/12345/Jimmy/N,200010 12.00,\n"
+ "#Section251234,Main,First/HS/12345/Jack/M,200011 11.00";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(string);
List<String> group1 = new ArrayList<>();
List<String> group2 = new ArrayList<>();
List<String> group3 = new ArrayList<>();
while (matcher.find()) {
group1.add(matcher.group(1));
String[] parts
= matcher.
group(2).
split("\\s+"); for (int i = 0; i < parts.length; i++) {
if (i % 2 == 0) {
group2.add(parts[i]);
} else {
group3.add(parts[i]);
}
}
}
System.
out.
println("Group 1: " + Arrays.
toString(group1.
toArray())); System.
out.
println("Group 2: " + Arrays.
toString(group2.
toArray())); System.
out.
println("Group 3: " + Arrays.
toString(group3.
toArray())); }
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwoKY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewogICAgICAgIFN0cmluZyByZWdleCA9ICIjU2VjdGlvbihcXGQrKVxcYig/Oig/ISNTZWN0aW9uXFxkKS4pKlxcYkphY2svTSwoXFxkK1xcaCtbLStdP1xcZCsoPzpcXC5cXGQrKT8oPzpcXHMrXFxkK1xcaCtbLStdP1xcZCsoPzpcXC5cXGQrKT8pKikiOwogICAgICAgIFN0cmluZyBzdHJpbmcgPSAiI1NlY3Rpb24yNTAzNDIsTWFpbixGaXJzdC9IUy8xMjM0NS9KYWNrL00sMjAwMDEwIDEwLjAwIDIwMDAxMSAtMi4wMCxcbiIKICAgICAgICAgICAgICAgICsgIiNTZWN0aW9uMjUwMzIyLE1haW4sRmlyc3QvSFMvMTIzNDUvQWFyb24vTiwyMDAwMTAgMTcuMDAsXG4iCiAgICAgICAgICAgICAgICArICIjU2VjdGlvbjI1MDM5OSxNYWluLEZpcnN0L0hTLzEyMzQ1L0ppbW15L04sMjAwMDEwIDEyLjAwLFxuIgogICAgICAgICAgICAgICAgKyAiI1NlY3Rpb24yNTEyMzQsTWFpbixGaXJzdC9IUy8xMjM0NS9KYWNrL00sMjAwMDExIDExLjAwIjsKCiAgICAgICAgUGF0dGVybiBwYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKHJlZ2V4LCBQYXR0ZXJuLk1VTFRJTElORSk7CiAgICAgICAgTWF0Y2hlciBtYXRjaGVyID0gcGF0dGVybi5tYXRjaGVyKHN0cmluZyk7CgogICAgICAgIExpc3Q8U3RyaW5nPiBncm91cDEgPSBuZXcgQXJyYXlMaXN0PD4oKTsKICAgICAgICBMaXN0PFN0cmluZz4gZ3JvdXAyID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgTGlzdDxTdHJpbmc+IGdyb3VwMyA9IG5ldyBBcnJheUxpc3Q8PigpOwoKICAgICAgICB3aGlsZSAobWF0Y2hlci5maW5kKCkpIHsKICAgICAgICAgICAgZ3JvdXAxLmFkZChtYXRjaGVyLmdyb3VwKDEpKTsKICAgICAgICAgICAgU3RyaW5nW10gcGFydHMgPSBtYXRjaGVyLmdyb3VwKDIpLnNwbGl0KCJcXHMrIik7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChpICUgMiA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZ3JvdXAyLmFkZChwYXJ0c1tpXSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGdyb3VwMy5hZGQocGFydHNbaV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiR3JvdXAgMTogIiArIEFycmF5cy50b1N0cmluZyhncm91cDEudG9BcnJheSgpKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJHcm91cCAyOiAiICsgQXJyYXlzLnRvU3RyaW5nKGdyb3VwMi50b0FycmF5KCkpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkdyb3VwIDM6ICIgKyBBcnJheXMudG9TdHJpbmcoZ3JvdXAzLnRvQXJyYXkoKSkpOwogICAgfQp9