如何使用Regex Extract从URL中提取文件名

时间:2018-05-03 23:48:53

标签: regex google-analytics

我在url中有文件名要删除前面的URL和文件路径以及""后出现的版本;

Sample URL

尝试使用正则表达式来提取CaptialForecasting_Datasheet.pdf

Google Data Studio中的Extract似乎很独特。尝试了这个建议,但一直无法解析'错误。我能够用以下内容删除网址的第一部分。事件标签是我存储下载PDF的URL的地方。

网址:https://www.dudesolutions.com/Portals/0/Documents/HC_Brochure_Digital.pdf?ver=2018-03-18-110927-033

EXP_EXTRACT( Event Label , 'Documents/([^&]+)' )

它给了我一个结果:

HC_Brochure_Digital.pdf?版本= 2018-03-18-110927-033

现在试图确定如何在之后取出所有内容?版本数据的位置。那么只需要Filename.pdf。

5 个答案:

答案 0 :(得分:0)

以下正则表达式将使用.pdf扩展名

提取文件名
(?:[^\/][\d\w\.]+)(?<=(?:.pdf))

您可以添加更多此类扩展名

(?:[^\/][\d\w\.]+)(?<=(?:.pdf)|(?:.jpg))

Demo

答案 1 :(得分:0)

假设名称显示在最后一个/之后,并以?结尾,则下面的正则表达式将在组1中保留名称,您可以使用\1或无论你使用什么工具支持。

.*\/(.*)\?

它基本上说:将所有内容放在最后/和第一个?之间,并将其放在第1组中。

另一个只匹配您想要但更复杂的文件名的正则表达式是:

(?<=\/)[^\/]*(?=\?)

它匹配所有非/个字符[^\/],紧跟/(?<=\/)后紧跟?(?=\?) 。第一个括号是一个正面的后观,括号中的第二个表达是一个积极的前瞻。

答案 2 :(得分:0)

你可以尝试:

[^\/]+(?=\?[^\/]*$)

即使路径中有问号,也会匹配CaptialForecasting_Datasheet.pdf。例如,正则表达式将在以下两种情况下都成功:

https://www.dudesolutions.com/somepath/CaptialForecasting_Datasheet.pdf?ver
https://www.dudesolutions.com/somepath?/CaptialForecasting_Datasheet.pdf?ver

答案 3 :(得分:0)

REGEXP_EXTRACT公式捕获了a-zA-Z0-9_./之间的字符?

REGEXP_EXTRACT(Event Label, "/([\\w\\.]+)\\?")

Google Data Studio Report进行演示。

3]

答案 4 :(得分:0)

请尝试以下正则表达式
[A-Za-z\_]*.pdf

我已经在https://regexr.com/在线尝试过。附上屏幕截图以供参考
enter image description here

请注意,这仅适用于.pdf文件