如何在Google Apps脚本中使用正则表达式来替换文本中的特殊字符,而只替换某些字符串之间的特殊字符?
所以如果这是文本而x代表随机的字母数字字符......
XX @@ xxxSTARTxxx @@@ XXX $ xxxENDxxxxx @@££xxxSTARTxxxx££££XXX&安培;&安培;&安培;&安培;&安培; xxxxENDxxx
我需要什么样的正则表达式,所以我最终得到了
XX @@ xxxSTARTxxxxxxxxxENDxxxxx @@££xxxSTARTxxxxxxxxxxxENDxxx
答案 0 :(得分:0)
您可以使用带有回调的替换:
var text = "xx@@xxxSTARTxxx@@@xxx$xxxENDxxxxx@@££xxxSTARTxxxx££££xxx&&&&&xxxxENDxxx";
var regex = /(START)([\s\S]*?)(END)/g;
var result = text.replace(regex, function ($0, $1, $2, $3) {
return $1 + $2.replace(/[^\w\s]+/g, '') + $3;
});
console.log(result);
// => xx@@xxxSTARTxxxxxxxxxENDxxxxx@@££xxxSTARTxxxxxxxxxxxENDxxx
第一个正则表达式是一个简单的正则表达式,用于匹配两个字符串之间的字符串:
(START)
-第1组($1
):START
(可以用任何模式替换)([\s\S]*?)
-第2组($2
):任意0个以上的字符,但应尽可能少(END)
-第3组($3
):END
(可以用任何模式替换)我在这里使用的用于匹配特殊字符的正则表达式为[^\w\s]
,它匹配除ASCII字母,数字,_
和空格之外的任何1+个字符。
有关特殊字符正则表达式的更多变化,请参见Check for special characters in string。