在字符串中搜索某个前缀,并使用正则表达式保留最后一部分

时间:2019-04-11 14:10:21

标签: regex google-analytics

我遇到了正则表达式问题。

在Google Analytics(分析)中,我想添加一个过滤器来重写URL的某些部分,并仅保留URL的最后一部分。

我的问题是,在这些URL中,我有一个字符-

这是一个示例:

/on/wordsearched.store/sites-eu-site/section_1/default

在这里,我应该保留default

如您所见,URL包含破折号-

因此,当我使用以下正则表达式时:

[^/on/wordsearched.store/sites\-eu\-site/section_1](.*)

它应该给我字符串default

相反,它给了我fault

它会切断单词的前两个字符。有人知道原因吗?

我尝试了许多解决方案,这些解决方案并非完全符合我的期望:

[^/]+$:这将使用所有URL,但我只希望以上述前缀开头的URL。

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

将对wordsearched进行非捕获匹配,并获取最后的/

(?:wordsearched.*)\/(?<last>.*$)

答案 1 :(得分:0)

原因是因为您在方括号内使用了以^开头的否定字符类,所以与列出的字符类不匹配。

该字符类中的第一个匹配项是f。匹配之后,您将在给定ault的捕获组中捕获除换行符以外的所有字符。所以整个比赛是fault

See the regex match

我认为您的意思是匹配第一个捕获组中的默认值,其中^现在表示并锚定以断言字符串的开头。

^\/on/wordsearched\.store\/sites-eu-site\/section_1\/(.*)

Regex demo

答案 2 :(得分:0)

这与最后一个正斜杠之后的所有单词字符**

(?<=\/)[\w]*$  

Demo

**任何字母,数字或下划线,等效于[a-zA-Z0-9_]

如果google-analytics允许您使用python代码,则可以按如下方式简单地使用.split():

S = '/on/wordsearched.store/sites-eu-site/section_1/default'
S.split('/')[-1]  ## Output:  'default'