2015-10-31 3 views
0

Это кусок кода Google Apps Script:Регулярное выражение удаление только первый экземпляр

var re = /(<.*?>)+/; 
var strip = str.replace(re, ""); 
Logger.log(strip); 

Почему раздеть только первый экземпляр тега?

+0

Это часто повторяется вопрос о переполнении стека, что во всех случаях тривиально найти. Зная, что сценарий приложений Google - это JavaScript, поможет найти все эти предыдущие решения. Один из них: – Jonathon

+0

Хотя я признаю, что решение моего ответа можно найти в этом вопросе: [Как заменить несколько строк методом .replace()] (http://stackoverflow.com/questions/14013223/how -to-replace-multiple-strings-with-the-replace-method), однако я считаю, что мой вопрос больше ориентирован на Google Script. –

+0

Да и нет. Скрипт Google Apps - это, во-первых, среда выполнения JavaScript. Специфическая часть Google находится в API, которые ссылаются на службы Google. Regex испещрен в функциональности JavaScript. Скрипт приложений ничего не приносит этой стороне. – Jonathon

ответ

3
var re = /(<.*?>)/g 

Конечный g - это флаг, который необходимо установить для замены всех соответствующих экземпляров. В зависимости от содержания str вы передаете другой флаг вы можете попробовать добавлять в m, который означает, что шаблон должен применяться к нескольким линиям т.е.

var re = /(<.*?>)/mg 
+0

Спасибо! Он работает с '/ g'. Где я могу найти документацию об этом? Поскольку те тестеры regex, которые я использовал, работают так, как мне нужно, без '/ g'. –

+0

Зависит от того, насколько плохо/хорошо реализованы эти переводчики. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Parameters – Jonathon

+0

Недавно я был очень доволен RegEx101. [Вот ваш RexEx] (https://regex101.com/r/xE2kA7/1) и [здесь версия 2] (https://regex101.com/r/xE2kA7/2) с предложением Джонатона. – Mogsdad

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