import java.util.* ;
import java.lang.* ;
import java.io.* ;
import java.util.regex.Matcher ;
import java.util.regex.Pattern ;
class Ideone
{
{
String regex
= "(?<hex><#\\ w+>)|(?<action>\\ [[^]]*]\\ ([^]]*\\ ))|(?<text>[\\ w!* ]+)" ; String string
= "Some <#000000>*text* [<#ffffff>Some more](action: Other <#gradient>text) and **finally** some more <#000>text!" ;
Pattern pattern = Pattern.compile ( regex) ;
Matcher matcher = pattern.matcher ( string) ;
while ( matcher.find ( ) ) {
if ( matcher.group ( "hex" ) != null ) {
System .
out .
println ( "HEX - " + matcher.
group ( "hex" ) ) ; }
if ( matcher.group ( "text" ) != null ) {
System .
out .
println ( "TEXT - " + matcher.
group ( "text" ) ) ; }
if ( matcher.group ( "action" ) != null ) {
System .
out .
println ( "ACTION - " + matcher.
group ( "action" ) ) ; }
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOwoKY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN0cmluZyByZWdleCA9ICIoPzxoZXg+PCNcXHcrPil8KD88YWN0aW9uPlxcW1teXV0qXVxcKFteXV0qXFwpKXwoPzx0ZXh0PltcXHchKiBdKykiOwoJCVN0cmluZyBzdHJpbmcgPSAiU29tZSA8IzAwMDAwMD4qdGV4dCogWzwjZmZmZmZmPlNvbWUgbW9yZV0oYWN0aW9uOiBPdGhlciA8I2dyYWRpZW50PnRleHQpIGFuZCAqKmZpbmFsbHkqKiBzb21lIG1vcmUgPCMwMDA+dGV4dCEiOwoJCQoJCVBhdHRlcm4gcGF0dGVybiA9IFBhdHRlcm4uY29tcGlsZShyZWdleCk7CgkJTWF0Y2hlciBtYXRjaGVyID0gcGF0dGVybi5tYXRjaGVyKHN0cmluZyk7CgkJCgkJd2hpbGUgKG1hdGNoZXIuZmluZCgpKSB7CgkJCWlmIChtYXRjaGVyLmdyb3VwKCJoZXgiKSAhPSBudWxsKSB7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkhFWCAtICIgKyBtYXRjaGVyLmdyb3VwKCJoZXgiKSk7CQoJCQl9CgkJCWlmIChtYXRjaGVyLmdyb3VwKCJ0ZXh0IikgIT0gbnVsbCkgewoJCQkJU3lzdGVtLm91dC5wcmludGxuKCJURVhUIC0gIiArIG1hdGNoZXIuZ3JvdXAoInRleHQiKSk7CQoJCQl9CgkJCWlmIChtYXRjaGVyLmdyb3VwKCJhY3Rpb24iKSAhPSBudWxsKSB7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkFDVElPTiAtICIgKyBtYXRjaGVyLmdyb3VwKCJhY3Rpb24iKSk7CQoJCQl9CgkJfQoJfQp9