import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Ideone
{
{
String s
= "Today [#[#item#] was|the items were#] shipped so [#it is|they are#] gone."; System.
out.
println(convert
(s,
true)); System.
out.
println(convert
(s,
false)); }
public static String convert
(String text,
boolean isSingular
) { Pattern spPattern = Pattern.compile("\\[#((?:\\[#.*?#]|(?!#])[^|])*?)\\|((?:\\[#.*?#]|(?!#])[^|])*?)#]");
Matcher matcher = spPattern.matcher(text);
while (matcher.find()) {
String replacement
= isSingular
? matcher.
group(1) : matcher.
group(2); text = matcher.replaceFirst(replacement);
matcher = spPattern.matcher(text);
}
return text;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOwoKY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN0cmluZyBzID0gIlRvZGF5IFsjWyNpdGVtI10gd2FzfHRoZSBpdGVtcyB3ZXJlI10gc2hpcHBlZCBzbyBbI2l0IGlzfHRoZXkgYXJlI10gZ29uZS4iOwoJCVN5c3RlbS5vdXQucHJpbnRsbihjb252ZXJ0KHMsIHRydWUpKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oY29udmVydChzLCBmYWxzZSkpOwoJfQoJCglwdWJsaWMgc3RhdGljIFN0cmluZyBjb252ZXJ0KFN0cmluZyB0ZXh0LCBib29sZWFuIGlzU2luZ3VsYXIpIHsKCQlQYXR0ZXJuIHNwUGF0dGVybiA9IFBhdHRlcm4uY29tcGlsZSgiXFxbIygoPzpcXFsjLio/I118KD8hI10pW158XSkqPylcXHwoKD86XFxbIy4qPyNdfCg/ISNdKVtefF0pKj8pI10iKTsKCQlNYXRjaGVyIG1hdGNoZXIgPSBzcFBhdHRlcm4ubWF0Y2hlcih0ZXh0KTsKCQl3aGlsZSAobWF0Y2hlci5maW5kKCkpIHsKCQkJU3RyaW5nIHJlcGxhY2VtZW50ID0gaXNTaW5ndWxhciA/IG1hdGNoZXIuZ3JvdXAoMSkgOiBtYXRjaGVyLmdyb3VwKDIpOwoJCQl0ZXh0ID0gbWF0Y2hlci5yZXBsYWNlRmlyc3QocmVwbGFjZW1lbnQpOwoJCQltYXRjaGVyID0gc3BQYXR0ZXJuLm1hdGNoZXIodGV4dCk7CgkJfQoJCXJldHVybiB0ZXh0OwoJfQp9