/* 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)(\\ G(?!\\ A)|^sufixpart$)(?:(?!^(?:sufixpart|end)$).)*?(subdata\\ S*)(?=.*?^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 = Pattern.compile ( rx) ;
Matcher matcher = pattern.matcher ( s) ;
List< List< String>> res = new ArrayList<> ( ) ;
List< String> lst = null ;
while ( matcher.find ( ) ) {
if ( ! matcher.group ( 1 ) .isEmpty ( ) ) {
if ( lst != null ) res.add ( lst) ;
lst = new ArrayList<> ( ) ;
lst.add ( matcher.group ( 2 ) ) ;
} else lst.add ( matcher.group ( 2 ) ) ;
}
if ( lst != null ) res.add ( lst) ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmcgcnggPSAiKD9zbSkoXFxHKD8hXFxBKXxec3VmaXhwYXJ0JCkoPzooPyFeKD86c3VmaXhwYXJ0fGVuZCkkKS4pKj8oc3ViZGF0YVxcUyopKD89Lio/XmVuZCQpIjsKCQlTdHJpbmcgcyA9ICJpbnZhbGlkc3VmaXhcbnN1YmFkYXRheFxuc3VmaXhwYXJ0XG5zdWJkYXRhMVxuc29tZXJhbmRvbW5cbnN1YmRhdGEyXG5zdWJkYXRhblxuZW5kXG5pbnZhbGlkc3VmaXhcbnN1YmFkYXRheFxuc3VmaXhwYXJ0XG5zdWJkYXRhMDAxXG5zb21lcmFuZG9tblxuc3ViZGF0YTAwMlxuc3ViZGF0YTAwblxuZW5kIjsKCQlQYXR0ZXJuIHBhdHRlcm4gPSBQYXR0ZXJuLmNvbXBpbGUocngpOwoJCU1hdGNoZXIgbWF0Y2hlciA9IHBhdHRlcm4ubWF0Y2hlcihzKTsKCQlMaXN0PExpc3Q8U3RyaW5nPj4gcmVzID0gbmV3IEFycmF5TGlzdDw+KCk7CgkJTGlzdDxTdHJpbmc+IGxzdCA9IG51bGw7CgkJd2hpbGUgKG1hdGNoZXIuZmluZCgpKXsKCQkJaWYgKCFtYXRjaGVyLmdyb3VwKDEpLmlzRW1wdHkoKSkgewoJCQkJaWYgKGxzdCAhPSBudWxsKSByZXMuYWRkKGxzdCk7CgkJCQlsc3QgPSBuZXcgQXJyYXlMaXN0PD4oKTsKCQkJCWxzdC5hZGQobWF0Y2hlci5ncm91cCgyKSk7CgkJCX0gZWxzZSBsc3QuYWRkKG1hdGNoZXIuZ3JvdXAoMikpOyAKCQl9IAoJCWlmIChsc3QgIT0gbnVsbCkgcmVzLmFkZChsc3QpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihyZXMpOyAKCX0KfQ==