import java.util.ArrayList ;
import java.util.List ;
import java.util.regex.Matcher ;
import java.util.regex.Pattern ;
class Main
{
{
List< String> el = new ArrayList<> ( ) ;
el.add ( "holiday: New Year's Day Wednesday 1 January 2014" ) ;
el.add ( "holiday: Chinese New Year Friday 31 January 2014 Saturday 1 February 2014" ) ;
el.add ( "holiday: Good Friday Friday 18 April 2014" ) ;
el.add ( "holiday: Labour Day Thursday 1 May 2014" ) ;
el.add ( "holiday: Vesak Day Tuesday 13 May 2014" ) ;
el.add ( "holiday: Hari Raya Puasa Monday 28 July 2014" ) ;
el.add ( "holiday: National Day Saturday 9 August 2014" ) ;
el.add ( "holiday: Deepavali Thursday** 23 October 2014" ) ;
el.add ( "holiday: Christmas Day Thursday 25 December 2014" ) ;
Pattern pattern = Pattern
.compile ( "(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)(\\ *){0,2}\\ s+\\ d{1,2}\\ s+(January|February|March|April|May|June|July|August|September|October|November|December)\\ s+\\ d{4}" ) ;
// out put
for ( int k = 0 ; k < el.size ( ) - 2 ; k++ ) {
Matcher matcher = pattern.matcher ( el.get ( k) ) ;
// Check all occurrences
while ( matcher.find ( ) ) {
System .
out .
println ( "Found: " + matcher.
group ( ) ) ; }
}
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CgpjbGFzcyBNYWluCnsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KICB7CiAgICAJTGlzdDxTdHJpbmc+IGVsID0gbmV3IEFycmF5TGlzdDw+KCk7CgkJZWwuYWRkKCJob2xpZGF5OiBOZXcgWWVhcidzIERheSBXZWRuZXNkYXkgMSBKYW51YXJ5IDIwMTQiKTsKCQllbC5hZGQoImhvbGlkYXk6IENoaW5lc2UgTmV3IFllYXIgRnJpZGF5IDMxIEphbnVhcnkgMjAxNCBTYXR1cmRheSAxIEZlYnJ1YXJ5IDIwMTQiKTsKCQllbC5hZGQoImhvbGlkYXk6IEdvb2QgRnJpZGF5IEZyaWRheSAxOCBBcHJpbCAyMDE0Iik7CgkJZWwuYWRkKCJob2xpZGF5OiBMYWJvdXIgRGF5IFRodXJzZGF5IDEgTWF5IDIwMTQiKTsKCQllbC5hZGQoImhvbGlkYXk6IFZlc2FrIERheSBUdWVzZGF5IDEzIE1heSAyMDE0Iik7CgkJZWwuYWRkKCJob2xpZGF5OiBIYXJpIFJheWEgUHVhc2EgTW9uZGF5IDI4IEp1bHkgMjAxNCIpOwoJCWVsLmFkZCgiaG9saWRheTogTmF0aW9uYWwgRGF5ICBTYXR1cmRheSA5IEF1Z3VzdCAyMDE0Iik7CgkJZWwuYWRkKCJob2xpZGF5OiBEZWVwYXZhbGkgIFRodXJzZGF5KiogMjMgT2N0b2JlciAyMDE0Iik7CgkJZWwuYWRkKCJob2xpZGF5OiBDaHJpc3RtYXMgRGF5IFRodXJzZGF5IDI1IERlY2VtYmVyIDIwMTQiKTsKCgkJUGF0dGVybiBwYXR0ZXJuID0gUGF0dGVybgoJCQkJLmNvbXBpbGUoIihNb25kYXl8VHVlc2RheXxXZWRuZXNkYXl8VGh1cnNkYXl8RnJpZGF5fFNhdHVyZGF5fFN1bmRheSkoXFwqKXswLDJ9XFxzK1xcZHsxLDJ9XFxzKyhKYW51YXJ5fEZlYnJ1YXJ5fE1hcmNofEFwcmlsfE1heXxKdW5lfEp1bHl8QXVndXN0fFNlcHRlbWJlcnxPY3RvYmVyfE5vdmVtYmVyfERlY2VtYmVyKVxccytcXGR7NH0iKTsKCgkJLy8gb3V0IHB1dAoJCWZvciAoaW50IGsgPSAwOyBrIDwgZWwuc2l6ZSgpIC0gMjsgaysrKSB7CgoJCQlNYXRjaGVyIG1hdGNoZXIgPSBwYXR0ZXJuLm1hdGNoZXIoZWwuZ2V0KGspKTsKCQkJLy8gQ2hlY2sgYWxsIG9jY3VycmVuY2VzCgkJCXdoaWxlIChtYXRjaGVyLmZpbmQoKSkgewoJCQkJU3lzdGVtLm91dC5wcmludGxuKCJGb3VuZDogIiArIG1hdGNoZXIuZ3JvdXAoKSk7CgkJCX0KCQl9CiAgfQp9