嗯,我试过了,失败了,我又来了。什么是一个好的Perl正则表达式来修饰绝对路径?
我需要匹配我的abs路径模式。
/public_html/mystuff/10000001/001/10/01.cnt
我在不洁模式等。
#!/usr/bin/perl -Tw
use CGI::Carp qw(fatalsToBrowser);
use strict;
use warnings;
$ENV{PATH} = "bin:/usr/bin";
delete ($ENV{qw(IFS CDPATH BASH_ENV ENV)});
我需要打开相同的文件一对夫妇倍以上,污点力量我每次解除污染的文件名。虽然我可能会做其他事情,但我仍然需要帮助构建这种模式以供将来参考。
my $file = "$var[5]";
if ($file =~ /(\w{1}[\w-\/]*)/) {
$under = "/$1\.cnt";
} else {
ErroR();
}
你可以看到我的初学者企图,我接近无知。
由于我构造不良,但工作正则表达式,我不得不添加正斜杠和扩展到$1
。
所以,我需要帮助学习如何解决我的表情让$1
代表/public_html/mystuff/10000001/001/10/01.cnt
可能有人在这里举行我的手,告诉我怎么做:
$file =~ /(\w{1}[\w-\/]*)/
符合我的绝对路径/public_html/mystuff/10000001/001/10/01.cnt
?
感谢您的任何帮助。
顺便提一句,'$ file = $ var [5];'就够了;不需要引用'$ var [5]'。看到http://perldoc.perl.org/perlfaq4.html#What%27s-wrong-with-always-quoting-%22%24vars%22%3f另外,我相信你会意识到,'@ var'是一个糟糕的名称。 – 2009-10-13 20:12:39
谢谢。是的,“var”刚刚离开袖口,试图在问题中尽可能清楚。我仍然在学习双引号或不规则。我明白单引号-vs-双倍,所以我实际上在学习。 – 2009-10-13 20:22:48
为了更直接地回答最后一个问题:/(\ w {1} [\ w - \ /] *)/不会匹配正斜杠或扩展名,因为您从未允许正则表达式中的这些字符。你需要更多的东西像/\/?(\w{1}[\w-\/\.]*)/。请注意,我添加了一个可选的前导正斜杠,并且在第一个单词后添加了一段时间的可能性。当然,下面的答案仍然更好 - 尽可能更具体更好 - 但为了学习,我认为有这个答案也很重要。 :) – Rini 2009-10-14 15:06:42