/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
import java.util.regex.Matcher ;
import java.util.regex.Pattern ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
final String regex
= "^(?!(?:(?:(?:\\ d{1,3}(?:[FM])\\ .(?:Front|Profile|Right)\\ .(?:Anger|Fear|Frown|Smile)\\ .(?:BW\\ .Micro|BW|C\\ .Micro|C)))|(?:\\ d{1,3}(?:F|M)\\ .(?:Front|Profile|Right)\\ .(?:Neutral|Smile)\\ .(?:C\\ .Micro|C|BW\\ .Micro|BW|HighLight|LowLight|MedLight)\\ .(?:BW\\ .Micro|BW|C\\ .Micro|C))|(?:\\ d{1,3}(?:F|M)\\ .(?:Selfie1|Selfie2|StudentID)\\ .(?:C\\ .Micro|C|BW\\ .Micro|BW)))).*$" ; final String string
= "95F Front Anger BW\n " + "95F Front Anger BW\n "
+ "95F Front Anger.BW\n "
+ "95F.Front.Anger.C.Micro\n "
+ "95F.Front.Fear.C.Micro\n "
+ "95F.Front.Frown.BW\n "
+ "-95F Front Anger BW.jpg \n "
+ "-95F.Front.Anger.C.Micro.jpg \n "
+ "-95F.Front.Fear.C.Micro.jpg \n "
+ "-95F.Front.Frown.BW.jpg" ;
final Pattern pattern = Pattern.compile ( regex, Pattern.MULTILINE ) ;
final Matcher matcher = pattern.matcher ( string) ;
while ( matcher.find ( ) ) {
System .
out .
println ( "Full match: " + matcher.
group ( 0 ) ) ; for ( int i = 1 ; i <= matcher.groupCount ( ) ; i++ ) {
System .
out .
println ( "Group " + i
+ ": " + matcher.
group ( i
) ) ; }
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOwoKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgoKCQlmaW5hbCBTdHJpbmcgcmVnZXggPSAiXig/ISg/Oig/Oig/OlxcZHsxLDN9KD86W0ZNXSlcXC4oPzpGcm9udHxQcm9maWxlfFJpZ2h0KVxcLig/OkFuZ2VyfEZlYXJ8RnJvd258U21pbGUpXFwuKD86QldcXC5NaWNyb3xCV3xDXFwuTWljcm98QykpKXwoPzpcXGR7MSwzfSg/OkZ8TSlcXC4oPzpGcm9udHxQcm9maWxlfFJpZ2h0KVxcLig/Ok5ldXRyYWx8U21pbGUpXFwuKD86Q1xcLk1pY3JvfEN8QldcXC5NaWNyb3xCV3xIaWdoTGlnaHR8TG93TGlnaHR8TWVkTGlnaHQpXFwuKD86QldcXC5NaWNyb3xCV3xDXFwuTWljcm98QykpfCg/OlxcZHsxLDN9KD86RnxNKVxcLig/OlNlbGZpZTF8U2VsZmllMnxTdHVkZW50SUQpXFwuKD86Q1xcLk1pY3JvfEN8QldcXC5NaWNyb3xCVykpKSkuKiQiOwoJCWZpbmFsIFN0cmluZyBzdHJpbmcgPSAiOTVGICAgIEZyb250ICAgQW5nZXIgICBCV1xuIgoJCQkgKyAiOTVGIEZyb250IEFuZ2VyIEJXXG4iCgkJCSArICI5NUYgRnJvbnQgQW5nZXIuQldcbiIKCQkJICsgIjk1Ri5Gcm9udC5Bbmdlci5DLk1pY3JvXG4iCgkJCSArICI5NUYuRnJvbnQuRmVhci5DLk1pY3JvXG4iCgkJCSArICI5NUYuRnJvbnQuRnJvd24uQldcbiIKCQkJICsgIi05NUYgRnJvbnQgQW5nZXIgQlcuanBnICAgIFxuIgoJCQkgKyAiLTk1Ri5Gcm9udC5Bbmdlci5DLk1pY3JvLmpwZyAgICBcbiIKCQkJICsgIi05NUYuRnJvbnQuRmVhci5DLk1pY3JvLmpwZyAgICBcbiIKCQkJICsgIi05NUYuRnJvbnQuRnJvd24uQlcuanBnIjsKCgkJZmluYWwgUGF0dGVybiBwYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKHJlZ2V4LCBQYXR0ZXJuLk1VTFRJTElORSk7CgkJZmluYWwgTWF0Y2hlciBtYXRjaGVyID0gcGF0dGVybi5tYXRjaGVyKHN0cmluZyk7CgoJCXdoaWxlIChtYXRjaGVyLmZpbmQoKSkgewoJCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZ1bGwgbWF0Y2g6ICIgKyBtYXRjaGVyLmdyb3VwKDApKTsKCQkgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbWF0Y2hlci5ncm91cENvdW50KCk7IGkrKykgewoJCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJHcm91cCAiICsgaSArICI6ICIgKyBtYXRjaGVyLmdyb3VwKGkpKTsKCQkgICAgfQoJCX0KCgoKCX0KfQ==