提取某些字符之间的文本

时间:2020-07-02 12:55:02

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

我具有以下链接结构(例如,无法加入链接):

https://zoom.us/j/345678634?pwd=fdgSDdfdfasgdgJEeXNaRjNBZz09

我的目标是在两个不同的单元格中提取两个数字

第一个: 345678634

我尝试过: (?<=/j/).(?=?pwd)

第二个: fdgSDdfdfasgdgJEeXNaRjNBZz09

我尝试过(除其他以外): (?<=?pwd).

我想到的是第二个是?pwd=后面的所有内容,而第一个是/j/?pwd=之间的所有内容。我只是不知道如何使用正则表达式来完成这项工作。

2 个答案:

答案 0 :(得分:2)

您可以尝试:

.*?\/j\/(\d+)\?pwd=(\w+)

上述正则表达式的解释:

  • .*? -匹配懒惰 j之前的所有内容。
  • \/j\/ -从字面上匹配/j/
  • (\d+) -代表第一个或多个匹配组的捕获组数字。
  • \? -从字面上匹配?
  • pwd= -从字面上匹配pwd=
  • (\w+) -代表第二个捕获单词字符的捕获组,即[0-9a-zA-Z_]一次或多次。

enter image description here

您可以在here.中找到上述正则表达式的演示

Result

答案 1 :(得分:1)

不幸的是,RE2不支持环视(AFAIK)。但似乎您可以使用:

=REGEXEXTRACT(A1,"(\d+).*=(.*)")

enter image description here

  • (-打开第一个捕获组。
    • \d+-至少匹配一位数字。
    • )-关闭第一个捕获组。
  • .*-匹配零个或多个字符(贪婪)
  • =-匹配文字=
  • (-打开第二个捕获组。
    • .*-匹配除换行符以外的任何字符,零次或多次。
    • )-关闭第二个捕获组。

由于 spill 功能,两组都将被提取到相邻的单元格中。


如果要避免使用REGEX,第二种选择是使用SPLITQUERY。但是,根据您的数据,我不确定哪个会更快处理:

=QUERY(SPLIT(SUBSTITUTE(A1,"?pwd=","/"),"/"),"Select Col4,Col5")