【问题标题】:Regex: extract multiple URL strings from a cell of arrays正则表达式:从数组单元中提取多个 URL 字符串
【发布时间】:2020-12-03 10:14:35
【问题描述】:

什么是匹配在第一个逗号处停止的 URL 字符串的干净正则表达式模式?尝试从 Google 表格中的数组中提取值。

单元格 A1

{https://www.myshop.com/shop/the_first_shop,Marcus. White's. Shop.,ACTIVE,US};{https://www.myshop.com/shop/a-second-shop,The first! Shop,CLOSED,UK};{EMPTY,ClosedShop,CLOSED,IN}

所需输出(单元格 B1)

https://www.myshop.com/shop/the_first_shop,https://www.myshop.com/shop/a-second-shop

我已经想出如何在我想要的输出单元格中获得一个干净的匹配值数组:

=trim(regexreplace(regexreplace(regexreplace(REGEXREPLACE(A2,"/(https?:\/\/[^ ]*)/"," "),";"," "),"}"," "),"{"," "))

但我找不到以逗号结尾的正则表达式模式。比如这个解决方案:

"/(https?:\/\/[^ ]*)/" 

匹配第一个 URL,但返回给我:

https://www.myshop.com/shop/the_first_shop,Marcus. White's. Shop.,ACTIVE,US https://www.myshop.com/shop/a-second-shop,The first! Shop,CLOSED,UK EMPTY,ClosedShop,CLOSED,IN

【问题讨论】:

  • 分享您的工作表副本以及所需输出的示例

标签: regex google-sheets extract google-sheets-formula string-matching


【解决方案1】:

我会选择 REGEXREPLACE 并使用:

=REGEXREPLACE(A1,".*?(?:(https.*?)|$)","$1")

只是一个尾随逗号来处理...

=REGEXREPLACE(REGEXREPLACE(A1,".*?(?:(https.*?(,))|$)","$1"),",$","")

REGEXREPLACE 的更长替代方案可能是:

=TEXTJOIN(",",,QUERY(TRANSPOSE(SPLIT(SUBSTITUTE(SUBSTITUTE(A1,"{","}"),"}",","),",")),"Select Col1 where Col1 like 'http%'"))

【讨论】:

  • 这完美地返回了所有的 URL 匹配(不仅仅是第一个)!谢谢
【解决方案2】:

以逗号结尾的正则表达式模式

=REGEXEXTRACT(A1, "(https?:\/\/[^,]*)")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2017-08-09
    • 2023-02-09
    • 2014-08-25
    • 1970-01-01
    相关资源
    最近更新 更多