繁体   English   中英

在域javascript(Google Apps脚本)正则表达式之前替换所有内容

[英]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.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM