regex提取uri

问题描述 投票:0回答:1
在这里是完整的uri:

https://example.com/entry/#/view/TCMaftR7cPYyC3q61TnI6_Mx8PwDTsnVyo9Z6nsXHDRzrN5ftuXxHN7NvIGK34-z/366792786/aHR0cHM6Ly9lcGwuaXJpY2EuZ292LmlyL0ltZWlBZnRlclJlZ2lzdGVyP2ltZWk9MzU5NzQ0MzkxMDc2Mjg4
我想在

/view/

之后和在这种情况下提取base64 string,在这种情况下
366792786
这是我要匹配的部分:

numeric part

我已经设法走了这么远:
TCMaftR7cPYyC3q61TnI6_Mx8PwDTsnVyo9Z6nsXHDRzrN5ftuXxHN7NvIGK34-z

,但它只会产生整个过程:

my $uri = "https://example.com/entry/#/view/TCMaftR7cPYyC3q61TnI6_Mx8PwDTsnVyo9Z6nsXHDRzrN5ftuXxHN7NvIGK34-z/366792786/aHR0cHM6Ly9lcGwuaXJpY2EuZ292LmlyL0ltZWlBZnRlclJlZ2lzdGVyP2ltZWk9MzU5NzQ0MzkxMDc2Mjg4"; if ($uri =~ m/view\/(.+)\//g) { print $&; }

请帮助我找到言论。
    

您应该使用

view/TCMaftR7cPYyC3q61TnI6_Mx8PwDTsnVyo9Z6nsXHDRzrN5ftuXxHN7NvIGK34-z/366792786/
perl
1个回答
0
投票
$&捕获括号中的内容。

也:


不使用$1

,因为它抓住了斜线。 使用

.+

抓住所有非斜切字符。
    不需要
  • [^/]+
    全局修饰符。
    
    您可以使用替代定义者
    //g
    避免逃脱斜线字符。
  • {}
  • 输出:
  • my $uri = "https://example.com/entry/#/view/TCMaftR7cPYyC3q61TnI6_Mx8PwDTsnVyo9Z6nsXHDRzrN5ftuXxHN7NvIGK34-z/366792786/aHR0cHM6Ly9lcGwuaXJpY2EuZ292LmlyL0ltZWlBZnRlclJlZ2lzdGVyP2ltZWk9MzU5NzQ0MzkxMDc2Mjg4";
    if ($uri =~ m{view/([^/]+)}) {
        print $1;
    }
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.