Ciao a tutti,
ho una query molto corposa da cui ho necessità di estrarre solo i nomi delle tabelle che vengono usate nella query.
Le tabelle hanno nomi diversi ma per fortuna sono tutte riportate con lo stesso pattern: database.schema.nome_tabella
Il nome_tabella poi è composto sempre da 6 caratteri totali: 3 lettere seguite da 3 numeri.
Quindi il pattern completo è database.schema.[A-Za-z]{3}\d{3}.
Vorrei poter eliminare tutto quello che sta tra un pattern ed il successivo, rimpiazzandolo con nulla, eliminando di fatto join e condizioni varie che stanno in mezzo.
Per fare un esempio, se ho:SELECT *
FROM database.schema.abc123
INNER JOIN database.schema.def456 on id1 = id2
LEFT JOIN database.schema.ghi789 on id2 = id3
WHERE 1=1
vorrei avere come risultato:database.schema.abc123
database.schema.def456
database.schema.ghi789
Ho fatto un primo tentativo usando l'espressione regolare:database.schema.[A-Za-z]{3}\d{3}(.|\s)*?database.schema.[A-Za-z]{3}\d{3}
ma giustamente include nella selezione anche la stringa che devo mantenere.
Come posso impostare l'espressione regolare in modo da selezionare solo quello che c'è tra due stringhe (diverse tra loro ma con stesso pattern) escludendo dalla selezione le stringhe interessate?
Grazie a tutti per il supporto.