Ты делаешь это задом наперед. Сохраните данные в разбитой форме, с таблицей для обновления, именами столбцов и выражениями для генерации новых значений. Из этого канонического представления сгенерируйте и SQL (когда вам это нужно), и список обновляемых столбцов (когда вам это нужно).
Если вам абсолютно необходимо извлечь имена столбцов из оператора SQL, я не думаю, что регулярные выражения - это правильный путь. Например, в общем случае вам может потребоваться пропустить новые выражения значений, которые содержат произвольно вложенные скобки. Вы, вероятно, захотите полный анализатор SQL. В книге Lex & Yacc Левина, Мейсона и Брауна есть глава о разборе SQL.
Ответ на обновление:
Вы находитесь в мире боли. Единственный способ сделать то, что вы хотите, это полностью проанализировать SQL, потому что вам также нужно убедиться, что у вас нет подвыражений, которые выполняют несанкционированные действия.
Я очень, очень настоятельно рекомендую вам придумать другой способ сделать то, что вы делаете. Может быть, разбить изменяемые поля в отдельную таблицу и использовать элементы управления доступом? Может быть, придумать другой интерфейс, чтобы они могли указать, что они хотят сделать? Что бы вы ни делали, почти наверняка есть лучший способ сделать это. По этому пути будут драконы.