Java Регулярное выражение для поиска всех столбцов определенной таблицы с использованием псевдонима таблицы. - PullRequest
3 голосов
/ 10 марта 2020

В приведенном ниже запросе мне нужно найти все столбцы таблицы1, используя псевдоним T_1

select T_1.name, T_1.age, T_2.dept from table1 T_1, table2 T_2 where T_1.id=T_2.id

Ответ: name, age, id

Я использую приведенное ниже выражение, в котором я хочу завершить поиск при появлении специального символа. В приведенном ниже выражении я заканчиваю поиск, когда есть "=", но я хочу обобщить, когда есть не aplpha цифра c символа.

"(?i)\\b" + T_1 + "\\." + "[a-zA-Z]*([^\\=]+)"

Регулярное выражение должно работать и для запроса ниже, выберите T_1.name, T_1.age из таблицы 1, где T_1.id> 100

1 Ответ

4 голосов
/ 10 марта 2020

Вы можете использовать

(?i)\bT_1\.(\w+)

См. Демоверсию regex . Обратите внимание, что \w+ не соответствует «специальным» символам, только буквам, цифрам или подчеркиванию. Если подчеркивание не допускается, замените \w+ на [^\W_]+ или \p{Alnum} и добавьте \b границы слова:

(?i)\bT_1\.([^\W_]+)\b

Подробности

  • (?i) - регистр нечувствителен ie режим включен
  • \b - граница слова
  • T_1\. - T_1. подстрока
  • (\w+) - Группа 1: одна или несколько букв, цифр или _. Чтобы исключить _ и сопоставлять только буквы или цифры, используйте ([^\W_]+) или (\p{Alnum}+) и добавьте \b границы слова.

Java использование:

String regex1 = "(?i)\\bT_1\\.(\\w+)";
String regex2 = "(?i)\\bT_1\\.([^\\W_]+)\\b";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...