/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
import java.util.regex.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static final String GOOD_1
= "[key1:value1,key2:value2,key3:value3],[key21:value21,key22:value22]" ; private static final String GOOD_2
= "[key1:value1],[key21:value21]" ; private static final String GOOD_3
= "[key1:value1]" ; private static final String BAD_1
= "[key1:value1],[key21]" ; private static final String KEY_VALUE
= "[^:,]+:[^:,]+" ; private static final String TOKEN
= "\\ [" + KEY_VALUE
+ "(," + KEY_VALUE
+ ")*\\ ]" ; private static final String REGEX
= TOKEN
+ "(," + TOKEN
+ ")*" ;
{
System .
out .
println ( "REGEX is " + REGEX
) ; System .
out .
println ( GOOD_1
+ " is " + check
( GOOD_1
) ) ; System .
out .
println ( GOOD_2
+ " is " + check
( GOOD_2
) ) ; System .
out .
println ( GOOD_3
+ " is " + check
( GOOD_3
) ) ; System .
out .
println ( BAD_1
+ " is " + check
( BAD_1
) ) ; }
private static boolean check
( String str
) { return str.matches ( REGEX) ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEdPT0RfMSA9ICJba2V5MTp2YWx1ZTEsa2V5Mjp2YWx1ZTIsa2V5Mzp2YWx1ZTNdLFtrZXkyMTp2YWx1ZTIxLGtleTIyOnZhbHVlMjJdIjsKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBHT09EXzIgPSAiW2tleTE6dmFsdWUxXSxba2V5MjE6dmFsdWUyMV0iOwogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEdPT0RfMyA9ICJba2V5MTp2YWx1ZTFdIjsKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCQURfMSA9ICJba2V5MTp2YWx1ZTFdLFtrZXkyMV0iOwogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEtFWV9WQUxVRSA9ICJbXjosXSs6W146LF0rIjsKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUT0tFTiA9ICJcXFsiICsgS0VZX1ZBTFVFICsgIigsIiArIEtFWV9WQUxVRSArICIpKlxcXSI7CiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVHRVggPSBUT0tFTiArICIoLCIgKyBUT0tFTiArICIpKiI7CgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJU3lzdGVtLm91dC5wcmludGxuKCJSRUdFWCBpcyAiICsgUkVHRVgpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihHT09EXzEgKyAiIGlzICIgKyBjaGVjayhHT09EXzEpKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oR09PRF8yICsgIiBpcyAiICsgY2hlY2soR09PRF8yKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKEdPT0RfMyArICIgaXMgIiArIGNoZWNrKEdPT0RfMykpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihCQURfMSArICIgaXMgIiArIGNoZWNrKEJBRF8xKSk7Cgl9CgogICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBjaGVjayhTdHJpbmcgc3RyKSB7CiAgICAgICAgIHJldHVybiBzdHIubWF0Y2hlcyhSRUdFWCk7CiAgICB9Cn0=
stdout
REGEX is \[[^:,]+:[^:,]+(,[^:,]+:[^:,]+)*\](,\[[^:,]+:[^:,]+(,[^:,]+:[^:,]+)*\])*
[key1:value1,key2:value2,key3:value3],[key21:value21,key22:value22] is true
[key1:value1],[key21:value21] is true
[key1:value1] is true
[key1:value1],[key21] is false