/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
import java.util.regex.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
String rx
= "(?sm)^sufixpart$(.*?)^end$" ; String s
= "invalidsufix\n subadatax\n sufixpart\n subdata1\n somerandomn\n subdata2\n subdatan\n end\n invalidsufix\n subadatax\n sufixpart\n subdata001\n somerandomn\n subdata002\n subdata00n\n end" ; Pattern pattern_outer = Pattern.compile ( rx) ;
Pattern pattern_token = Pattern.compile ( "(?m)^subdata\\ S*$" ) ;
Matcher matcher = pattern_outer.matcher ( s) ;
List< List< String>> res = new ArrayList<> ( ) ;
while ( matcher.find ( ) ) {
List< String> lst = new ArrayList<> ( ) ;
if ( ! matcher.group ( 1 ) .isEmpty ( ) ) {
Matcher m = pattern_token.matcher ( matcher.group ( 1 ) ) ;
while ( m.find ( ) ) {
lst.add ( m.group ( 0 ) ) ;
}
}
res.add ( lst) ;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmcgcnggPSAiKD9zbSlec3VmaXhwYXJ0JCguKj8pXmVuZCQiOwoJCVN0cmluZyBzID0gImludmFsaWRzdWZpeFxuc3ViYWRhdGF4XG5zdWZpeHBhcnRcbnN1YmRhdGExXG5zb21lcmFuZG9tblxuc3ViZGF0YTJcbnN1YmRhdGFuXG5lbmRcbmludmFsaWRzdWZpeFxuc3ViYWRhdGF4XG5zdWZpeHBhcnRcbnN1YmRhdGEwMDFcbnNvbWVyYW5kb21uXG5zdWJkYXRhMDAyXG5zdWJkYXRhMDBuXG5lbmQiOwoJCVBhdHRlcm4gcGF0dGVybl9vdXRlciA9IFBhdHRlcm4uY29tcGlsZShyeCk7CgkJUGF0dGVybiBwYXR0ZXJuX3Rva2VuID0gUGF0dGVybi5jb21waWxlKCIoP20pXnN1YmRhdGFcXFMqJCIpOwoJCU1hdGNoZXIgbWF0Y2hlciA9IHBhdHRlcm5fb3V0ZXIubWF0Y2hlcihzKTsKCQlMaXN0PExpc3Q8U3RyaW5nPj4gcmVzID0gbmV3IEFycmF5TGlzdDw+KCk7CgkJd2hpbGUgKG1hdGNoZXIuZmluZCgpKXsKCQkJTGlzdDxTdHJpbmc+IGxzdCA9IG5ldyBBcnJheUxpc3Q8PigpOwoJCQlpZiAoIW1hdGNoZXIuZ3JvdXAoMSkuaXNFbXB0eSgpKSB7CgkJCQlNYXRjaGVyIG0gPSBwYXR0ZXJuX3Rva2VuLm1hdGNoZXIobWF0Y2hlci5ncm91cCgxKSk7CgkJCQl3aGlsZSAobS5maW5kKCkpIHsKCQkJCQlsc3QuYWRkKG0uZ3JvdXAoMCkpOwoJCQkJfQoJCQl9CgkJCXJlcy5hZGQobHN0KTsKCQl9IAoJCVN5c3RlbS5vdXQucHJpbnRsbihyZXMpOyAKCX0KfQ==