如何删除没有查询的href属性?

时间:2019-01-20 22:45:51

标签: regex google-sheets google-sheets-formula

使用Google表格,我想从“ href”属性中获取一个没有可能查询的网址。例如,从https://test.com<a href="https://test.com">Test1</a>获取<a href="https://test.com?this">Test1</a>

我使用了https://stackoverflow.com/a/40426187/4829915中提供的正则表达式答案来删除查询字符串,然后提取实际的URL。

有没有办法在一个公式中做到这一点?

请在下面查看我的操作。在所有这些示例中,最终输出为https://test.com

    A                                                           B                               C
1                                                               \?[^\"]+                        href="(.+)"
2   <a href="https://test.com">Test1</a>                        =REGEXREPLACE(A2, B$1, "")      =REGEXEXTRACT(B2, C$1)
3   <a href="https://test.com?param=eter">Test2</a>             =REGEXREPLACE(A3, B$1, "")      =REGEXEXTRACT(B3, C$1)
4   <a href="https://test.com?param=eter&and=this">Test3</a>    =REGEXREPLACE(A4, B$1, "")      =REGEXEXTRACT(B4, C$1)

1 个答案:

答案 0 :(得分:3)

在这个答案中,我想提出两种模式。在第一种模式中,它使用REGEXEXTRACT。在第二种模式中,它通过Google Apps脚本使用自定义功能(这是一个示例。)。

模式1:使用公式

=REGEXEXTRACT(A2, C1)

其中C1为href="(.+?)[\?"]

模式2:使用自定义功能

使用此功能时,请将脚本复制并粘贴到脚本编辑器中。然后请在=getUrl(A2)之类的单元格中使用它。

function getUrl(value) {
  var obj = XmlService.parse(value.replace(/&/g, ";"));
  var url = obj.getRootElement().getAttribute("href").getValue();
  return url.split("?")[0];
}

结果:

enter image description here

参考文献: