Я пытаюсь извлечь имена таблиц из запросов. Это то, что у меня есть сейчас:
(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
Как это побороть?