Javascript регулярное выражение заменить шаблон, не касаясь аналогичного шаблона - PullRequest
0 голосов
/ 21 января 2020

У меня есть такая строка:

var str = 'SELECT * FROM table_a JOIN table_b JOIN (SELECT * FROM table_c) c JOIN table_d';

I wi sh для вставки имени базы данных между 'JOIN' и 'table_a'; но я не могу sh вставить имя базы данных между 'JOIN' и подзапросом.

Т.е. после замены строка должна выглядеть следующим образом:

   result = 'SELECT * FROM table_a JOIN database.table_b JOIN (SELECT * FROM table_c) c JOIN database.table_d';

Есть ли способ использовать регулярное выражение для вставки имени базы данных между JOIN и именами таблиц, не касаясь шаблона "JOIN ("?

Представьте, что в строке есть десятки таблиц с разными именами ...

1 Ответ

0 голосов
/ 23 января 2020

Глупый способ - сначала вставить имя базы данных и вернуть ее обратно, если найдена какая-либо база данных JOIN. (Найдено:

var str = 'SELECT * FROM table_a JOIN table_b JOIN (SELECT * FROM table_c) c JOIN table_d';

str.replace(/JOIN/g, 'JOIN database.').replace(/JOIN\sdatabase\.\(/g, '/JOIN (');

Но это очень неэффективно для больших запросов. Надеюсь, кто-то сможет поделиться какой-нибудь умной идеей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...