У меня есть SQL-запрос в формате:
SELECT dt FROM a.b.c WHERE dt = '20210808' LIMIT 10;
Имя таблицы в этом операторе SQL — a.b.c, и я хочу извлечь только последнюю часть имени таблицы (c). Имя таблицы всегда соответствует следующему шаблону: схема1.схема2.имя_таблицы. Моя цель — извлечь table_name (последний элемент) с помощью регулярного выражения в PHP.
Вот моя текущая попытка:
$sql = "SELECT dt FROM a.b.c WHERE dt = '20210808' LIMIT 10";
$tmp_table_name_pattern = '/\.([^.]*$)/';
preg_match_all($tmp_table_name_pattern, $sql, $match);
print_r($match);
Однако результат, который я получаю:
Array (
[0] => Array (
[0] => .c WHERE dt = '20210808' LIMIT 10
)
[1] => Array (
[0] => c WHERE dt = '20210808' LIMIT 10
)
)
Я ожидаю, что в качестве имени таблицы будет извлечено только c. Как я могу изменить свое регулярное выражение или PHP-код, чтобы добиться этого?
Что я пробовал:
- Я поймите, что шаблон регулярного выражения /\.([^.]*$)/ соответствует всему после последней точки, но также включает дополнительный контент после имени таблицы (например, WHERE и т. д.). .
- Мне нужен способ точно остановиться на имени таблицы и избежать совпадения дополнительных частей запроса.
Я хочу, чтобы результат был следующим:
Array (
[0] => Array (
[0] => c
)
)
Подробнее здесь: https://stackoverflow.com/questions/687 ... gex-in-php