/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
String data
= "syntax = \"proto3\";\r\n" + "package grpc;\r\n" +
"\r\n" +
"import \"envoyproxy/protoc-gen-validate/validate/validate.proto\";\r\n" +
"import \"google/api/annotations.proto\";\r\n" +
"import \"google/protobuf/wrappers.proto\";\r\n" +
"import \"protoc-gen-swagger/options/annotations.proto\";\r\n" +
"\r\n" +
"message Acc {\r\n" +
" message AccErr {\r\n" +
" enum Enum {\r\n" +
" UNKNOWN = 0;\r\n" +
" CASH = 1;\r\n" +
" }\r\n" +
" }\r\n" +
" string account_id = 1;\r\n" +
" string name = 3;\r\n" +
" string account_type = 4;\r\n" +
"}\r\n" +
"\r\n" +
"message Name {\r\n" +
" string firstname = 1;\r\n" +
" string lastname = 2;\r\n" +
"}";
String[] messages
= data.
replaceAll("(?sm)\\A.*?(?=^message)",
"").
split("\\R+(?=message)"); System.
out.
println("Found " + messages.
length + " messages: " + Arrays.
toString(messages
)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewogICAgICAgIFN0cmluZyBkYXRhID0gInN5bnRheCA9IFwicHJvdG8zXCI7XHJcbiIgKyAKICAgICAgICAgICAgInBhY2thZ2UgZ3JwYztcclxuIiArIAogICAgICAgICAgICAiXHJcbiIgKyAKICAgICAgICAgICAgImltcG9ydCBcImVudm95cHJveHkvcHJvdG9jLWdlbi12YWxpZGF0ZS92YWxpZGF0ZS92YWxpZGF0ZS5wcm90b1wiO1xyXG4iICsgCiAgICAgICAgICAgICJpbXBvcnQgXCJnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvXCI7XHJcbiIgKyAKICAgICAgICAgICAgImltcG9ydCBcImdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90b1wiO1xyXG4iICsgCiAgICAgICAgICAgICJpbXBvcnQgXCJwcm90b2MtZ2VuLXN3YWdnZXIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90b1wiO1xyXG4iICsgCiAgICAgICAgICAgICJcclxuIiArIAogICAgICAgICAgICAibWVzc2FnZSBBY2Mge1xyXG4iICsgCiAgICAgICAgICAgICIgICAgbWVzc2FnZSBBY2NFcnIge1xyXG4iICsgCiAgICAgICAgICAgICIgICAgICAgIGVudW0gRW51bSB7XHJcbiIgKyAKICAgICAgICAgICAgIiAgICAgICAgICAgIFVOS05PV04gPSAwO1xyXG4iICsgCiAgICAgICAgICAgICIgICAgICAgICAgICBDQVNIID0gMTtcclxuIiArIAogICAgICAgICAgICAiICAgICAgICB9XHJcbiIgKyAKICAgICAgICAgICAgIiAgICB9XHJcbiIgKyAKICAgICAgICAgICAgIiAgICBzdHJpbmcgYWNjb3VudF9pZCA9IDE7XHJcbiIgKyAKICAgICAgICAgICAgIiAgICBzdHJpbmcgbmFtZSA9IDM7XHJcbiIgKyAKICAgICAgICAgICAgIiAgICBzdHJpbmcgYWNjb3VudF90eXBlID0gNDtcclxuIiArIAogICAgICAgICAgICAifVxyXG4iICsgCiAgICAgICAgICAgICJcclxuIiArIAogICAgICAgICAgICAibWVzc2FnZSBOYW1lIHtcclxuIiArIAogICAgICAgICAgICAiICAgIHN0cmluZyBmaXJzdG5hbWUgPSAxO1xyXG4iICsgCiAgICAgICAgICAgICIgICAgc3RyaW5nIGxhc3RuYW1lID0gMjtcclxuIiArIAogICAgICAgICAgICAifSI7CiAgICAgICAgU3RyaW5nW10gbWVzc2FnZXMgPSBkYXRhLnJlcGxhY2VBbGwoIig/c20pXFxBLio/KD89Xm1lc3NhZ2UpIiwgIiIpLnNwbGl0KCJcXFIrKD89bWVzc2FnZSkiKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvdW5kICIgKyBtZXNzYWdlcy5sZW5ndGggKyAiIG1lc3NhZ2VzOiAiICsgQXJyYXlzLnRvU3RyaW5nKG1lc3NhZ2VzKSk7Cgl9Cn0=