/* 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 regex
= "[^-]*(-[^-]+)*-?;.*"; "; -- a : should match\r\n"
+ "-- a ; : should not match\r\n"
+ "-- ; : should not match\r\n"
+ "--; : should not match\r\n"
+ "-;- : should match\r\n"
+ "---; : should not match\r\n"
+ "-- semicolon ; : should not match\r\n"
+ "bla : should not match (; is mandatory)\r\n"
+ "-;--; : should match (the first occuring semicolon must not have two or more consecutive leading '-')\r\n"
+ "--;--; : should match (the first occuring semicolon must not have two or more consecutive leading '-')\r\n"
+ "--;-; : should match (the first occuring semicolon must not have two or more consecutive leading '-')\r\n"
+ "bla ; bla : should match").split("(?m)\\s*:.*$(\r\n)?");
System.
out.
printf("%-15s -> %b%n",s,s.
matches(regex
));
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN0cmluZyByZWdleCA9ICJbXi1dKigtW14tXSspKi0/Oy4qIjsKCQlTdHJpbmdbXSBkYXRhID0gKAoJCQkJICAiOyAtLSBhICAgICAgICAgICA6IHNob3VsZCBtYXRjaFxyXG4iCgkJCQkrICItLSBhIDsgICAgICAgICAgIDogc2hvdWxkIG5vdCBtYXRjaFxyXG4iCgkJCQkrICItLSA7ICAgICAgICAgICAgIDogc2hvdWxkIG5vdCBtYXRjaFxyXG4iCgkJCQkrICItLTsgICAgICAgICAgICAgIDogc2hvdWxkIG5vdCBtYXRjaFxyXG4iCgkJCQkrICItOy0gICAgICAgICAgICAgIDogc2hvdWxkIG1hdGNoXHJcbiIKCQkJCSsgIi0tLTsgICAgICAgICAgICAgOiBzaG91bGQgbm90IG1hdGNoXHJcbiIKCQkJCSsgIi0tIHNlbWljb2xvbiA7ICAgOiBzaG91bGQgbm90IG1hdGNoXHJcbiIKCQkJCSsgImJsYSAgICAgICAgICAgICAgOiBzaG91bGQgbm90IG1hdGNoICg7IGlzIG1hbmRhdG9yeSlcclxuIgoJCQkJKyAiLTstLTsgICAgICAgICAgICA6IHNob3VsZCBtYXRjaCAodGhlIGZpcnN0IG9jY3VyaW5nIHNlbWljb2xvbiBtdXN0IG5vdCBoYXZlIHR3byBvciBtb3JlIGNvbnNlY3V0aXZlIGxlYWRpbmcgJy0nKVxyXG4iCgkJCQkrICItLTstLTsgICAgICAgICAgICA6IHNob3VsZCBtYXRjaCAodGhlIGZpcnN0IG9jY3VyaW5nIHNlbWljb2xvbiBtdXN0IG5vdCBoYXZlIHR3byBvciBtb3JlIGNvbnNlY3V0aXZlIGxlYWRpbmcgJy0nKVxyXG4iCgkJCQkrICItLTstOyAgICAgICAgICAgIDogc2hvdWxkIG1hdGNoICh0aGUgZmlyc3Qgb2NjdXJpbmcgc2VtaWNvbG9uIG11c3Qgbm90IGhhdmUgdHdvIG9yIG1vcmUgY29uc2VjdXRpdmUgbGVhZGluZyAnLScpXHJcbiIKCQkJCSsgImJsYSA7IGJsYSAgICAgICAgOiBzaG91bGQgbWF0Y2giKS5zcGxpdCgiKD9tKVxccyo6LiokKFxyXG4pPyIpOwoKCQlmb3IgKFN0cmluZyBzIDogZGF0YSkKCQkJU3lzdGVtLm91dC5wcmludGYoIiUtMTVzIC0+ICViJW4iLHMscy5tYXRjaGVzKHJlZ2V4KSk7CgoJfQp9