使用REGEXP从URL中提取斜杠之间的特定文本

使用REGEXP从URL中提取斜杠之间的特定文本,regex,google-data-studio,re2,Regex,Google Data Studio,Re2,我们开始使用GoogleDataStudio来可视化我们的数据,我们需要正则表达式来帮助我们从系统的URL列表中提取特定的文本 URL示例: /town/articletype/46646-this-is-an-example-article 通过使用正则表达式,我们需要从URL获得什么: /town/(不带斜杠,如果可能,最后大写第一个字母) /articletype/(也不带斜杠) /46646-(不带/和-&&这是我们还需要的文章ID) -这是一篇示例文章(不带“-”和大写首字母)

我们开始使用GoogleDataStudio来可视化我们的数据,我们需要正则表达式来帮助我们从系统的URL列表中提取特定的文本

URL示例:

/town/articletype/46646-this-is-an-example-article
通过使用正则表达式,我们需要从URL获得什么:

  • /town/
    (不带斜杠,如果可能,最后大写第一个字母)
  • /articletype/
    (也不带斜杠)
  • /46646-
    (不带/和-&&这是我们还需要的文章ID)
  • -这是一篇示例文章
    (不带“-”和大写首字母)
我们尝试了许多正则表达式,并通过使用以下计算字段从URL中提取
/town/

REGEXP_EXTRACT(Page , '/(.*?)(/)')
下面的4种方法可以实现这一目的:

1)城镇

CONCAT(UPPER(REGEXP_EXTRACT(Page , "^/(\\w{1})")), LOWER(REGEXP_EXTRACT(Page , "^/\\w{1}([^/]*)")))
2)文章类型

REGEXP_EXTRACT(Page , "^/\\w+/([^/]*)")
CONCAT(UPPER(REGEXP_EXTRACT(Page , "/\\w+/\\w+/\\d+-(\\w{1}).*$")), LOWER(REGEXP_REPLACE(REGEXP_EXTRACT(Page , "/\\w+/\\w+/\\d+-\\w{1}(.*)$"), "-", " ")))
3)46646

REGEXP_EXTRACT(Page , "^/\\w+/\\w+/([^-]*)")
4)这是一篇示例文章

REGEXP_EXTRACT(Page , "^/\\w+/([^/]*)")
CONCAT(UPPER(REGEXP_EXTRACT(Page , "/\\w+/\\w+/\\d+-(\\w{1}).*$")), LOWER(REGEXP_REPLACE(REGEXP_EXTRACT(Page , "/\\w+/\\w+/\\d+-\\w{1}(.*)$"), "-", " ")))
和一个GIF来详细说明:


如果我们可以考虑URL总是遵循该格式,这个表达式将给你包含你的URL的每个部分的4个组:<代码> ^ \ /([AZZ+)\/([AZZ+)\/([09] +)-(\s+)$。现在,关于删除
-
并大写,我建议您使用正则表达式以外的其他方法来实现。Gerep,谢谢,这太棒了!我认为我们不能根据需要使用组,我们最好的方法是对URL的每个部分使用单独的表达式。我设法使它适用于城镇、文章ID和文章名称,但无法适用于文章类型。我不确定我错过了什么。只是想澄清一下:TOWN:^\/([a-z]+)\/---文章ID:([0-9]+)---文章名称:-(\S+)$。因为TOWN和文章类型具有相同的模式,最好是按照@Gerep的建议立即匹配它们。或者,如果必须单独使用,可以使用带有g标志的城镇模式,并获得第二个匹配项。