Думаю, вам не повезло с этим вопросом.
Прежде всего, REGEXREPLACE
заявил в документации, что фактически изменит весь совпадающий текст:
regular_expression
- Регулярное выражение. Все совпадающие экземпляры в тексте будут заменены.
Таким образом, даже при использовании групп захвата вы получите всю совпадающую строку. Я не знаю, может ли это быть проблемой или предполагаемым поведением, вы все равно можете сообщить, если хотите ( Справка> Отправить отзыв в Google ).
Другой способ мышления - использование просмотра вперед и назад, чтобы избежать совпадения нежелательного текста.
(?<=TEXT=")(.*?)(?=";)
Проблема с этим подходом заключается в том, что функции листов Google используют реализацию RE2 для регулярного выражения. Это означает, что смотреть вперед и смотреть назад не реализованы .
Обходной путь
Мое предложение для решения всех проблем заключалось бы в создании простой пользовательской функции скрипта приложений. поэтому вы можете использовать регулярное выражение javascript.
Я сделал очень простой код для вашего случая
function sensibleRegExpReplace(input, regEx, replace){
var reg = new RegExp(regEx);
return input.replace(reg, replace);
}
И вы получите следующий результат:
![Example of result](https://i.stack.imgur.com/NT6IM.png)
Я полагаю, что есть способ сделать все это, используя только встроенные функции листов с использованием вспомогательных ячеек. Но мне не удалось заставить его работать, и это кажется более элегантным.