/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;
import java.net.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static List
<String
> values
= Arrays.
asList("test",
"detest",
"test0/1/1");
public static Collection
<String
> query
(String queryStr,List
<String
> values
) { String orgQueryStr
= queryStr
; //queryStr= queryStr.replaceAll("\\*", "\\\\S*");
//queryStr = "\\S*" + queryStr + "\\S*";
queryStr= queryStr.replaceAll("\\*+", ".*");
queryStr = ".*" + queryStr + (queryStr.endsWith(".*") ? "" : ".*");
List<String> list = new ArrayList<String>();
for (int i=0;i<values.size();i++) {
String str1
= str.
toLowerCase(); //System.out.println("Search string : " + str1 + " QueryString : " + queryStr + " Original : " + orgQueryStr);
if (str1.matches(queryStr) || str1.contains(orgQueryStr)){
//System.out.println("Matched !!");
list.add(str);
}
else{
//System.out.println("Did not match " + str1);
}
}
if (list.isEmpty())
return null;
else
return list;
}
{
System.
out.
println(query
(queryStr.
toLowerCase(),values
)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKaW1wb3J0IGphdmEubmV0Lio7Ci8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyBMaXN0PFN0cmluZz4gdmFsdWVzID0gQXJyYXlzLmFzTGlzdCgidGVzdCIsImRldGVzdCIsInRlc3QwLzEvMSIpOwoKCXB1YmxpYyBzdGF0aWMgQ29sbGVjdGlvbjxTdHJpbmc+IHF1ZXJ5KFN0cmluZyBxdWVyeVN0cixMaXN0PFN0cmluZz4gdmFsdWVzKSB7CgkgICAgU3RyaW5nIG9yZ1F1ZXJ5U3RyID0gcXVlcnlTdHI7CgkgICAgLy9xdWVyeVN0cj0gcXVlcnlTdHIucmVwbGFjZUFsbCgiXFwqIiwgIlxcXFxTKiIpOwoJICAgIC8vcXVlcnlTdHIgPSAiXFxTKiIgKyBxdWVyeVN0ciArICJcXFMqIjsKCSAgICBxdWVyeVN0cj0gcXVlcnlTdHIucmVwbGFjZUFsbCgiXFwqKyIsICIuKiIpOwoJICAgIHF1ZXJ5U3RyID0gIi4qIiArIHF1ZXJ5U3RyICsgKHF1ZXJ5U3RyLmVuZHNXaXRoKCIuKiIpID8gIiIgOiAiLioiKTsgCgkgICAgU3lzdGVtLm91dC5wcmludGxuKHF1ZXJ5U3RyKTsKCSAgICBMaXN0PFN0cmluZz4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOwoJICAgIGZvciAoaW50IGk9MDtpPHZhbHVlcy5zaXplKCk7aSsrKSB7CgkgICAgICAgIFN0cmluZyBzdHIgPSB2YWx1ZXMuZ2V0KGkpOwoJICAgICAgICBTdHJpbmcgc3RyMSA9IHN0ci50b0xvd2VyQ2FzZSgpOwoJICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiU2VhcmNoIHN0cmluZyA6ICIgKyBzdHIxICsgIiBRdWVyeVN0cmluZyA6ICIgKyBxdWVyeVN0ciArICIgT3JpZ2luYWwgOiAiICsgb3JnUXVlcnlTdHIpOwoJICAgICAgICBpZiAoc3RyMS5tYXRjaGVzKHF1ZXJ5U3RyKSB8fCBzdHIxLmNvbnRhaW5zKG9yZ1F1ZXJ5U3RyKSl7CgkgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiTWF0Y2hlZCAhISIpOwoJICAgICAgICAgICAgbGlzdC5hZGQoc3RyKTsKCSAgICAgICAgfSAgCgkgICAgICAgIGVsc2V7CgkgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiRGlkIG5vdCBtYXRjaCAiICsgc3RyMSk7CgkgICAgICAgIH0KCSAgICB9CgkgICAgaWYgKGxpc3QuaXNFbXB0eSgpKQoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICBlbHNlCgkgICAgICAgIHJldHVybiBsaXN0OwoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN0cmluZyBxdWVyeVN0cj0idGUqIjsKCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oVVJMRGVjb2Rlci5kZWNvZGUocXVlcnlTdHIpKTsKCSAgICBxdWVyeVN0cj0gVVJMRGVjb2Rlci5kZWNvZGUocXVlcnlTdHIpOwoJICAgIFN5c3RlbS5vdXQucHJpbnRsbihxdWVyeShxdWVyeVN0ci50b0xvd2VyQ2FzZSgpLHZhbHVlcykpOwoJfQp9