import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;
class Ideone
{
{
// String s = "this*string'has only two@tokens'"; // => [this, stringhas only two@tokens]
String s
= "one'two''three' '' four 'twenty-one'"; Pattern pattern = Pattern.compile("(?:\\w|'[^']*')+", Pattern.UNICODE_CHARACTER_CLASS);
Matcher matcher = pattern.matcher(s);
List<String> tokens = new ArrayList<>();
while (matcher.find()){
tokens.add(matcher.group(0).replace("'", ""));
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkvLyBTdHJpbmcgcyA9ICJ0aGlzKnN0cmluZydoYXMgb25seSB0d29AdG9rZW5zJyI7IC8vID0+IFt0aGlzLCBzdHJpbmdoYXMgb25seSB0d29AdG9rZW5zXQoJCVN0cmluZyBzID0gIm9uZSd0d28nJ3RocmVlJyAnJyBmb3VyICd0d2VudHktb25lJyI7CgkJUGF0dGVybiBwYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKCIoPzpcXHd8J1teJ10qJykrIiwgUGF0dGVybi5VTklDT0RFX0NIQVJBQ1RFUl9DTEFTUyk7CgkJTWF0Y2hlciBtYXRjaGVyID0gcGF0dGVybi5tYXRjaGVyKHMpOwoJCUxpc3Q8U3RyaW5nPiB0b2tlbnMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKCQl3aGlsZSAobWF0Y2hlci5maW5kKCkpewoJCQl0b2tlbnMuYWRkKG1hdGNoZXIuZ3JvdXAoMCkucmVwbGFjZSgiJyIsICIiKSk7IAoJCX0KCQlTeXN0ZW0ub3V0LnByaW50bG4odG9rZW5zKTsKCX0KfQ==