Я пытаюсь сопоставить определенный текст, а затем заменить на текст плюс некоторые дополнительные символы. Минимальный пример текста:
#10 Oranges. These are citrus fruits
Желаемый вывод:
#10 Oranges.
These are citrus fruits
Regex: (#\d{1,2}[^.]*\.)\s*
Заменить: $1\n
(Я Match using regular expressions
проверил)
Регулярное выражение успешно совпадает #10 Oranges.
. Однако нумерованная обратная ссылка не заменяет текст группой захвата, а просто входит буквально (буквальный вывод - $1\n
). Я также попытался использовать обратную косую черту для нумерованной обратной ссылки, \1
и результат тот же.
Я что-то пропустил? Как заново вставить сопоставленный текст в документы Google с помощью регулярных выражений?
google-docs
regex
пользователь
источник
источник
Note: Capture groups only work with Google Sheets.
см. Support.google.com/docs/answer/62754#regular_expressionsОтветы:
Короткий ответ
Вместо использования встроенной функции поиска и замены используйте Google Apps Script или надстройку.
объяснение
В функции «Найти и заменить» Документов Google часть «Заменить» не работает с регулярными выражениями и не работает ни с
replaceText()
методом из Сервиса документов в Сценарии Google Apps, к счастью, работает метод замены JavaScript.Чтобы изучить основы создания простого скрипта, см. Https://developers.google.com/apps-script/overview.
Код
Этот код является адаптацией того, который включен в ссылку
Ссылки
источник
Replace with regular expressions
)Немного хакерский, но он не требует дополнительного добавления в скрипт и, вероятно, охватит 99% ваших случаев использования. Вы все еще можете использовать группы захвата с
RegexReplace
и ссылку в тексте замены с$1
или$2
. Просто разделите свое регулярное выражение на две группы захвата и объедините с помощью случайного (редко используемого) символа, такого как~
. Затем вы можете взять из него все возвращаемое значение и заменить его~
на новую строку:Для получения дополнительной информации о синтаксисе регулярных выражений, используемых в листах Google, см. Спецификацию re2
источник
Как указано пользователем в комментариях
Примечание. Группы захвата работают только с Google Sheets.
источник