/* package whatever; // don't place package name! */
import java.util.* ;
import java.util.regex.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Pattern p;
try {
p = Pattern.compile ( "\\ [(?<text>[^\\ ]]*)\\ ]\\ ((?<link>[^\\ )]*)\\ )" ) ;
} catch ( PatternSyntaxException ex) {
throw ( ex) ;
}
Matcher m1 = p.matcher ( "Hello" ) ;
Matcher m2 = p.matcher ( "Hello [world](ladies)" ) ;
Matcher m3 = p.matcher ( "Well, [this](that) has [two](too many) keys." ) ;
System .
out .
println ( "m1 matches: " + m1.
matches ( ) ) ; System .
out .
println ( "m2 matches: " + m2.
matches ( ) ) ; System .
out .
println ( "m3 matches: " + m3.
matches ( ) ) ; m2.start ( ) ;
m3.start ( ) ;
System .
out .
println ( "m2 text: " + m2.
group ( "text" ) ) ; System .
out .
println ( "m2 link: " + m2.
group ( "link" ) ) ; System .
out .
println ( "m3 text: " + m3.
group ( "text" ) ) ; System .
out .
println ( "m3 link: " + m3.
group ( "link" ) ) ; System .
out .
println ( "m3 count: " + m3.
groupCount ( ) ) ; System .
out .
println ( "m3 find: " + m3.
find ( ) ) ; }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4Lio7CmltcG9ydCBqYXZhLmxhbmcuKjsKaW1wb3J0IGphdmEuaW8uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJUGF0dGVybiBwOwoJCXRyeSB7CgkJCXAgPSBQYXR0ZXJuLmNvbXBpbGUoIlxcWyg/PHRleHQ+W15cXF1dKilcXF1cXCgoPzxsaW5rPlteXFwpXSopXFwpIik7CgkJfSBjYXRjaCAoUGF0dGVyblN5bnRheEV4Y2VwdGlvbiBleCkgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oZXgpOwoJCQl0aHJvdyhleCk7CgkJfQoJCU1hdGNoZXIgbTEgPSBwLm1hdGNoZXIoIkhlbGxvIik7CgkJTWF0Y2hlciBtMiA9IHAubWF0Y2hlcigiSGVsbG8gW3dvcmxkXShsYWRpZXMpIik7CgkJTWF0Y2hlciBtMyA9IHAubWF0Y2hlcigiV2VsbCwgW3RoaXNdKHRoYXQpIGhhcyBbdHdvXSh0b28gbWFueSkga2V5cy4iKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIm0xIG1hdGNoZXM6ICIgKyBtMS5tYXRjaGVzKCkpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigibTIgbWF0Y2hlczogIiArIG0yLm1hdGNoZXMoKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJtMyBtYXRjaGVzOiAiICsgbTMubWF0Y2hlcygpKTsKCQltMi5zdGFydCgpOwoJCW0zLnN0YXJ0KCk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJtMiB0ZXh0OiAiICsgbTIuZ3JvdXAoInRleHQiKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJtMiBsaW5rOiAiICsgbTIuZ3JvdXAoImxpbmsiKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJtMyB0ZXh0OiAiICsgbTMuZ3JvdXAoInRleHQiKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJtMyBsaW5rOiAiICsgbTMuZ3JvdXAoImxpbmsiKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJtMyBjb3VudDogIiArIG0zLmdyb3VwQ291bnQoKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJtMyBmaW5kOiAiICsgbTMuZmluZCgpKTsKCX0KfQ==