Regex perl正则表达式匹配子字符串
我有几个字符串,我想从中提取一个子字符串。以下是一个例子:Regex perl正则表达式匹配子字符串,regex,perl,Regex,Perl,我有几个字符串,我想从中提取一个子字符串。以下是一个例子: /skukke/integration/build/IO/something 我想提取第3个/字符之后的所有内容。在这种情况下,输出应该是 /build/IO/something 我试过这样的东西 /\/\s*([^\\]*)\s*$/ 比赛的结果是 something 这不是我想要的。有人能帮忙吗 正则表达式解 您可以使用的正则表达式是: (?:\/[^\/]+){2}(.*) 看 正则表达式解释: (?:\/[^\/]+
/skukke/integration/build/IO/something
我想提取第3个/
字符之后的所有内容。在这种情况下,输出应该是
/build/IO/something
我试过这样的东西
/\/\s*([^\\]*)\s*$/
比赛的结果是
something
这不是我想要的。有人能帮忙吗 正则表达式解
您可以使用的正则表达式是:
(?:\/[^\/]+){2}(.*)
看
正则表达式解释:
-精确匹配2次(?:\/[^\/]+){2}
,所有非/
的匹配1次或更多次/
-在我们之前匹配的内容之后匹配0个或多个字符,并将其放入捕获组1(.*)
/build/IO/something
非正则解
您可以使用:
输出/build/IO/something
请参见使用此正则表达式:
my $string = "/skukke/integration/build/IO/something";
$string =~ s/\/[a-zA-Z0-9]*\/[a-zA-Z0-9]*//;
希望这有帮助。听起来您真正想做的是创建与
/skukke/integration
相关的文件路径。应避免模式匹配,并使用模块和abs2rel
功能。但在任何人都能写一篇文章之前,你需要更好地解释你需要什么solution@Downvoter:这是给你的。否决工作解决方案不好。很乐意帮助。请考虑接受答案。对不起,请问,目的是什么??:在正则表达式的开头?<代码>(……)<代码>是为了使匹配更少的资源消耗。无论如何,我们没有使用这个值。如果需要,请在整个开头部分加上圆括号(a):((?:\/[^\/]+){2})(.*)
。
#!/usr/bin/perl
use File::Spec;
$parentPath = "/skukke/integration";
$filePath = "/skukke/integration/build/IO/something";
my $relativePath = File::Spec->abs2rel ($filePath, $parentPath);
print "/". $relativePath;
my $string = "/skukke/integration/build/IO/something";
$string =~ s/\/[a-zA-Z0-9]*\/[a-zA-Z0-9]*//;