2015-01-07 1 views
1

Я пытаюсь сделать что-то действительно действительно базовое. Это просто поиск и замена с помощью этой функции, которая использует некоторые собственные Regex, которые я никогда раньше не использовал.API Google Docs - проблемы с регулярным выражением Text.replaceText

https://developers.google.com/apps-script/reference/document/text#replaceText(String,String)

То, что я пытаюсь сделать это просто, проходят через весь документ и заменить заполнители с текстом. Строка для соответствия в этом формате:

#replace это пожалуйста #

Используя эту модель:

(\ W | ^) # заменить это пожалуйста # (\ W | $)

скопирована из примеров Google, найденных здесь (https://support.google.com/a/answer/1371417?hl=en)

Он работает абсолютно нормально за одно исключение, которое меня избивает. Если у меня есть 2 или более заполнителей в одной строке, это не будет соответствовать ни одному из них.

Так что, если у меня есть что-то вроде этого:

#replace мне пожалуйста # и некоторый нормальный текст здесь #replace мне тоже #

Ни один из этих 2 не будет соответствовать. Я предполагаю, что мое выражение не учитывает это, но документация очень трудно найти для их реализации регулярных выражений.

Помогите пожалуйста?

+0

Это буквально текст регулярного выражения, которое вы используете на этом этапе? '(\ W | ^) # заменить это пожалуйста # (\ W | $)'? Если нет, посмотрим, пожалуйста. Можем ли мы также увидеть реальную линию выборки, которая вас отключает? –

+0

Да, имена могут содержать пробелы и буквенные буквенные символы в верхнем регистре. Это имена столбцов из таблицы. Я создаю новый документ для каждой строки на листе, просто заменив имена столбцов на значение строки. Это обычный текст в абзаце документа один за другим. Например: # Официальное название оператора воздушного судна # работает как #Trading или работает как #. Описание операции находится в Приложении C к настоящему ТПС. – manu144x

ответ

0

Имея эту строку в документе:

enter image description here

Вы можете попробовать использовать следующее регулярное выражение функции замены:

function googleDocsApi27827395() { 
    var body = DocumentApp.getActiveDocument().getBody(); 
    body.replaceText("(\\W|^)#replace this please#(\\W|$)", ""); 
} 

Результат:

enter image description here

В \\W также соответствует соседнему символу после первого и перед последним поисковым словом, и они также удаляются. Если вам это не нужно, удалите (\\W|^) и (\\W|$).

В случае, если у вас есть 3 различных строки в между #...# с, вы можете использовать чередования построить регулярное выражение:

body.replaceText("#(replace this please|replace me (please|too))#", ""); 

Этой линия #replace me please# and #replace this please# some normal text here #replace me too# превратится в and some normal text here.

Смежные вопросы