import java.util.*;
import java.lang.*;
import java.util.regex.*;
class Main
{
{
String input
= "hello %my% world %but% not %your% world";
String singleDelimRegexp
= "(.*)(%[^%]*%)(.*)"; Pattern singleDelimPattern = Pattern.compile(singleDelimRegexp);
Matcher singleDelimMatcher = singleDelimPattern.matcher(input);
if (singleDelimMatcher.matches()) {
String before
= singleDelimMatcher.
group(1); String delim
= singleDelimMatcher.
group(2); String after
= singleDelimMatcher.
group(3);
System.
out.
println(before
+ "//" + delim
+ "//" + after
); }
String multiDelimRegexp
= "%[^%]*%"; Pattern multiDelimPattern = Pattern.compile(multiDelimRegexp);
Matcher multiDelimMatcher = multiDelimPattern.matcher(input);
int lastEnd = 0;
while (multiDelimMatcher.find()) {
String data
= input.
substring(lastEnd, multiDelimMatcher.
start()); String delim
= multiDelimMatcher.
group(); lastEnd = multiDelimMatcher.end();
}
String lastData
= input.
substring(lastEnd
);
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKCmNsYXNzIE1haW4KewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCiAgICB7CiAgICAgICAgU3RyaW5nIGlucHV0ID0gImhlbGxvICVteSUgd29ybGQgJWJ1dCUgbm90ICV5b3VyJSB3b3JsZCI7CgogICAgICAgIFN0cmluZyBzaW5nbGVEZWxpbVJlZ2V4cCA9ICIoLiopKCVbXiVdKiUpKC4qKSI7CiAgICAgICAgUGF0dGVybiBzaW5nbGVEZWxpbVBhdHRlcm4gPSBQYXR0ZXJuLmNvbXBpbGUoc2luZ2xlRGVsaW1SZWdleHApOwogICAgICAgIE1hdGNoZXIgc2luZ2xlRGVsaW1NYXRjaGVyID0gc2luZ2xlRGVsaW1QYXR0ZXJuLm1hdGNoZXIoaW5wdXQpOwoKICAgICAgICBpZiAoc2luZ2xlRGVsaW1NYXRjaGVyLm1hdGNoZXMoKSkgewogICAgICAgICAgICBTdHJpbmcgYmVmb3JlID0gc2luZ2xlRGVsaW1NYXRjaGVyLmdyb3VwKDEpOwogICAgICAgICAgICBTdHJpbmcgZGVsaW0gPSBzaW5nbGVEZWxpbU1hdGNoZXIuZ3JvdXAoMik7CiAgICAgICAgICAgIFN0cmluZyBhZnRlciA9IHNpbmdsZURlbGltTWF0Y2hlci5ncm91cCgzKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihiZWZvcmUgKyAiLy8iICsgZGVsaW0gKyAiLy8iICsgYWZ0ZXIpOwogICAgICAgIH0KCglTdHJpbmcgbXVsdGlEZWxpbVJlZ2V4cCA9ICIlW14lXSolIjsKICAgICAgICBQYXR0ZXJuIG11bHRpRGVsaW1QYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKG11bHRpRGVsaW1SZWdleHApOwogICAgICAgIE1hdGNoZXIgbXVsdGlEZWxpbU1hdGNoZXIgPSBtdWx0aURlbGltUGF0dGVybi5tYXRjaGVyKGlucHV0KTsKCiAgICAgICAgaW50IGxhc3RFbmQgPSAwOwogICAgICAgIHdoaWxlIChtdWx0aURlbGltTWF0Y2hlci5maW5kKCkpIHsKICAgICAgICAgICAgU3RyaW5nIGRhdGEgPSBpbnB1dC5zdWJzdHJpbmcobGFzdEVuZCwgbXVsdGlEZWxpbU1hdGNoZXIuc3RhcnQoKSk7CiAgICAgICAgICAgIFN0cmluZyBkZWxpbSA9IG11bHRpRGVsaW1NYXRjaGVyLmdyb3VwKCk7CiAgICAgICAgICAgIGxhc3RFbmQgPSBtdWx0aURlbGltTWF0Y2hlci5lbmQoKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGRhdGEpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGVsaW0pOwogICAgICAgIH0KICAgICAgICBTdHJpbmcgbGFzdERhdGEgPSBpbnB1dC5zdWJzdHJpbmcobGFzdEVuZCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGxhc3REYXRhKTsKICAgICAgICAKICAgIH0KfQoK