Как извлечь имена таблиц из SQL запросов? - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь извлечь имена таблиц из запросов. Это то, что у меня есть сейчас:

(from|join)[\s|\t]*(((\ *(\[?)(?(5)(\ *[\w\-\_\d\$\ \#]+\]))|[\w\-\_\d\$\#]+)\.?){1,4})

Это прекрасно работает с приведенным ниже примером. Я могу получить то, что я хочу, без дополнительного выделения (слово бла)

from linkedserver.db.schema.table bla
from db.schema.table bla
from schema.table bla
from table bla
from [linked  dserver]. [  db  ].   [  schema].[table] bla
from [db].schema.  [table] bla
from [schema].  [table] bla
from [table  ] bla

Результат:

linkedserver.db.schema.table
db.schema.table
schema.table
table
[linked  dserver]. [  db  ].   [  schema].[table]
[db].schema.  [table]
[schema].  [table]
[table  ]

Но это не удается с форматом ниже, где между именем объекта и пробелом есть пробел точка:

from db.schema   .   table bla
from [db]  .   schema.  [table] bla

Как это побороть?

...