const regex = /^([\w\W]+?)((?:\w+\.){0,}([^A-Za-zА-Яа-я_])h([^A-Za-zА-Яа-я_]))(?:\sAS \[[A-Za-zА-Яа-я_]+\]){0,}/gs;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^([\\w\\W]+?)((?:\\w+\\.){0,}([^A-Za-zА-Яа-я_])h([^A-Za-zА-Яа-я_]))(?:\\sAS \\[[A-Za-zА-Яа-я_]+\\]){0,}', 'gs')
const str = `SELECT \`L\`,
\`r_e\`,
T1.[r_w],
\`Soi\`,
\`Sor\`,
\`Swc\`,
\`i_k_2\`,
\`mu_w\`,
\`mu_o\`, \`Газоконденсатный_фактор\` AS [Газоконденсатный_фактор], \`Газосодержание_нефти\` AS [Газосодержание_нефти],
\`Геологические_запасы_конденсата\`,
\`Геологические_запасы_нефти\`,
\`Геологические_запасы_свободного_газа\`,
\`D\`,
\`Извлекаемые_запасы_конденсата\`,
\`Извлекаемые_запасы_нефти_новых_скважин\`,
\`Извлекаемые_запасы_нефти\`,
\`КИН\`,
\`Количество_буровых\`,
\`Количество_скважин\`,
\`FracCount\`,
\`Fw\`,
\`F\`,
\`Коэффициент_компенсации\`,
\`phi\`,
\`Ef\`,
\`Объемный_коэффициент_воды\`,
\`Bo\`,
\`Период_строительства_скважины\`,
\`Плотность_воды\`,
\`ro_o\`,
\`Плотность_сетки_скважин\`,
\`Площадь_объекта\`,
\`k_h\`,
\`k_f\`,
T1.\`Pwf\`,
\`Psat\`,
\`c_w\`,
\`c_o\`,
\`c_r\`,
\`S\`,
\`Соотношение__доб_нагн__0___беск\`,
\`Стартовая_приемистость\`,
\`Стартовый_дебит_жидкости\`,
\`Стартовый_дебит_нефти\`,
\`m1\`,
\`m2\`,
\`Стоимость_скв__ГС+ГРП\`,
\`Стоимость_скв__ГС+МГРП\`,
\`Стоимость_скв__ГС\`,
\`Стоимость_скв__ННС+ГРП\`,
\`Стоимость\`,
\`Pi\`,
\`t_p\`,
\`Тип_заканчивания_доб_скв\`,
\`Тип_заканчивания_нагн__скв\`,
\`wf\`,
T1.[h] FROM [DeleteMe5\$A1:DM253]
`;
const subst = `$1 Max($2) AS [Year]`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions