Вы можете извлечь всю строку после TABLE
в группу, а затем разделить запятой, чтобы получить отдельные значения:
String line = "CREATE TABLE DB_NAME.T_NAME";
String pattern = "\\bTABLE\\s+(\\w+(?:\\.\\w+)*)";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(line);
if (m.find()){
System.out.println(Arrays.toString(m.group(1).split("\\.")));
// => [DB_NAME, T_NAME]
}
См. Демонстрационную версию Java .
Если вы уверены во входящем формате строки, вы можете даже использовать
"\\bTABLE\\s+(\\S+)"
См. еще одну демонстрацию Java .
В то время как \w+(?:\.\w+)*
соответствует 1+ символам слова, за которыми следуют 0+ повторений .
и 1+ слова, \S+
явно соответствует 1+ непробельным символам.