
[英]Google Apps Script/Javascript search and replace with regex not working
[英]Replace everything before domain javascript (Google Apps Script) regex
假设有一个子域,如何在域和任何尾部斜杠之前替换URL中的所有内容?
示例字符串:
https://www.google.com/
http://net.tutsplus.com/about
我想要的结果(来自我的示例字符串)是:
google.com
tutsplus.com/about
目前,我正在使用的正则表达式是:
^https?:\\/\\/'
结果如下:
www.google.com/
net.tutsplus.com/about
这将取代URL中的斜杠,但我希望将所有内容替换为第一个.
我在Apps脚本中的当前代码是:
var body = DocumentApp.getActiveDocument().getBody();
body.replaceText('^https?:\/\/', '');
鉴于我正在使用Google Apps脚本,这可能是replaceText()
工作原理的一个问题。 先谢谢您的帮助。
看起来Google Doc的正则表达式实现很弱。 它不支持捕获组,因此您将遇到以下问题:
http://hoffmaninstitute.co.uk
http://google.com
http://docs.aws.amazon.com/
假设文本始终为http:// + one_sub_domain + domain + tld ,您可以使用:
var body = DocumentApp.getActiveDocument().getBody();
body.replaceText('^https?://[0-9A-Za-z_]+\.', '');
来自Apps脚本的.replaceText()
文档 :
使用正则表达式替换给定替换字符串的所有出现的给定文本模式。
不完全支持JavaScript正则表达式功能的子集,例如捕获组和模式修饰符。
它只接受字符串作为参数。 实现我自己的正则表达式搜索和替换是不必要的复杂,因为它必须在实际发布替换之前将每个对象类型转换为适当的Apps Script对象。
我没有注意到,如果他们的子域才能更换www
由于需要一个子域是可读的一些不可预见的链接字符串格式。 作为参考,这里有一套更全面的链接格式:
https://www.google.com/
https://www.google.com
https://google.com/
https://google.com
http://www.google.com/
http://www.google.com
http://google.com
https://product.google.com/about/
https://product.google.com/about
https://product.google.com/
https://product.google.com
http://product.google.com/about/
http://product.google.com/about
http://product.google.com/
http://product.google.com
虽然以下内容效率低且冗长,但它的工作原理如下:
function replaceLongUrls(element) {
element = element || DocumentApp.getActiveDocument().getBody();
element.replaceText('^https?:\/\/', '');
element.replaceText('^www.', '');
element.replaceText('/$', '');
};
资料来源:
Apps脚本文档
Google Apps脚本Regex exec()返回null
replaceText()RegEx“未跟随”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.