/* 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
{
{
try {
String script
= "IF N = 'abc' OR N = 'def' OR N = 'ghi' THEN";
// Groups:
// 1 = comparison value
// 2 = "or" list
// 1 = "or" comparison value
Pattern pattern = Pattern.compile("IF N = '([^']*)'(( OR N = '([^']*)')*) THEN");
Matcher matcher = pattern.matcher(script);
System.
out.
println("matches: "+ matcher.
matches()); System.
out.
println("if "+matcher.
group(1));
// just the "OR ..." parts
String orList
= matcher.
group(2); Pattern innerPattern = Pattern.compile(" OR N = '([^']*)'");
Matcher innerMatcher = innerPattern.matcher(orList);
while(innerMatcher.find()){
System.
out.
println(" or "+innerMatcher.
group(1)); }
}
e.
printStackTrace(System.
out); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4Lio7CmltcG9ydCBqYXZhLmxhbmcuKjsKaW1wb3J0IGphdmEuaW8uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJdHJ5IHsKCQkJU3RyaW5nIHNjcmlwdCA9ICJJRiBOID0gJ2FiYycgT1IgTiA9ICdkZWYnIE9SIE4gPSAnZ2hpJyBUSEVOIjsKCQkJCgkJCS8vIEdyb3VwczoKCQkJLy8gMSA9IGNvbXBhcmlzb24gdmFsdWUKCQkJLy8gMiA9ICJvciIgbGlzdAoJCQkvLyAgICAxID0gIm9yIiBjb21wYXJpc29uIHZhbHVlCgkJCVBhdHRlcm4gcGF0dGVybiA9IFBhdHRlcm4uY29tcGlsZSgiSUYgTiA9ICcoW14nXSopJygoIE9SIE4gPSAnKFteJ10qKScpKikgVEhFTiIpOwoJCQlNYXRjaGVyIG1hdGNoZXIgPSBwYXR0ZXJuLm1hdGNoZXIoc2NyaXB0KTsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJtYXRjaGVzOiAiKyBtYXRjaGVyLm1hdGNoZXMoKSk7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiaWYgIittYXRjaGVyLmdyb3VwKDEpKTsKCQkJCgkJCS8vIGp1c3QgdGhlICJPUiAuLi4iIHBhcnRzCgkJCVN0cmluZyBvckxpc3QgPSBtYXRjaGVyLmdyb3VwKDIpOwoJCQlQYXR0ZXJuIGlubmVyUGF0dGVybiA9IFBhdHRlcm4uY29tcGlsZSgiIE9SIE4gPSAnKFteJ10qKSciKTsKCQkJTWF0Y2hlciBpbm5lck1hdGNoZXIgPSBpbm5lclBhdHRlcm4ubWF0Y2hlcihvckxpc3QpOwoJCQl3aGlsZShpbm5lck1hdGNoZXIuZmluZCgpKXsKCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiICBvciAiK2lubmVyTWF0Y2hlci5ncm91cCgxKSk7CgkJCX0KCQl9CgkJY2F0Y2goRXhjZXB0aW9uIGUpewoJCQllLnByaW50U3RhY2tUcmFjZShTeXN0ZW0ub3V0KTsKCQl9Cgl9Cn0=