我有几个要从中提取子字符串的字符串。这是一个例子:
/skukke/integration/build/IO/something
Run Code Online (Sandbox Code Playgroud)
我想提取第三个/字符之后的所有内容。在这种情况下,输出应为
/build/IO/something
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情
/\/\s*([^\\]*)\s*$/
Run Code Online (Sandbox Code Playgroud)
比赛的结果是
something
Run Code Online (Sandbox Code Playgroud)
这不是我想要的。有人可以帮忙吗?
您可以使用的正则表达式是:
(?:\/[^\/]+){2}(.*)
Run Code Online (Sandbox Code Playgroud)
查看演示
正则表达式解释:
(?:\/[^\/]+){2}- 精确匹配 2 次/以及所有不是/1 次或多次的内容(.*)- 在我们之前匹配的字符之后匹配 0 个或多个字符,并将其放入捕获组 1。这是TutorialsPoint上的演示:
$str = "/skukke/integration/build/IO/something";
print $str =~ /(?:\/[^\/]+){2}(.*)/;
Run Code Online (Sandbox Code Playgroud)
输出:
/build/IO/something
Run Code Online (Sandbox Code Playgroud)
您可以使用File::Spec::Functions:
#!/usr/bin/perl
use File::Spec;
$parentPath = "/skukke/integration";
$filePath = "/skukke/integration/build/IO/something";
my $relativePath = File::Spec->abs2rel ($filePath, $parentPath);
print "/". $relativePath;
Run Code Online (Sandbox Code Playgroud)
输出/build/IO/something。
请参阅Ideone 上的演示
| 归档时间: |
|
| 查看次数: |
676 次 |
| 最近记录: |