快速正则表达式问题

时间:2009-08-14 21:19:41

标签: regex

任何人都可以指导我朝正确的方向发展......

我有一些文件夹符号,我想检查尾随/斜杠,一些文件夹没有尾随/如果它没有尾随 /我需要添加一个

如果我使用此正则表达式,它可以工作,但它会替换文件夹名称的最后一个字符

    Folder/name/test
    folder/name/test1/
    folder/name/test2/
replace(/.$/ig,"/");

此正则表达式替换Folder/name/tes[t]/但会取出t并将其替换为/

希望这是有道理的......

6 个答案:

答案 0 :(得分:6)

尝试这样的事情:

replace(/[^/]$/ig, "$0/")

答案 1 :(得分:3)

replace(/(.)$/ig,"\1/");

或更好

replace(/([^\\])$/ig,"\1/");

如果\ 1不是您的语言的反向引用,那么您必须弄清楚,或告诉我们语言。

答案 2 :(得分:1)

在不知道语言的情况下,很难发布正确的答案,并且您无法使用以剪切和粘贴的方式提供的代码。无论如何,我可能会选择这个正则表达式:

replace(/(.)\/*$/,"\1/");

如果它还没有,则会追加仅/ >的结尾。

答案 3 :(得分:1)

你制作的正则表达式基本上意味着:取任何字符串中的最后一个字符并用/替换它。您需要做的是将最后一个字符分组,然后在替换中再次插入,如下所示:

replace(/([^\/])$/ig,"$1/");

有关详细信息,请参阅 http://www.regular-expressions.info/brackets.html

答案 4 :(得分:1)

我不确定这是哪种语言,但这是你在Perl中的表现方式:

#! /local/bin/perl

my @data = <data>;
while (<DATA>)
{
    s#[^/]\n#/\n#m;
    print;
}

__DATA__
/foo/bar/
/baz/jazz
/baz/jazz

然后打印出以下内容:

/foo/bar/
/baz/jaz/
/baz/jazz/

正则表达式的关键是“[^ /] \ n”这基本上匹配换行符旁边的任何内容。根据您的命名法,我会假设语法如下:

replace(/[^\/]\n/ig,"/");

如果没有换行符,请使用此选项:

replace(/[^\/]$/ig,"/");

我希望有所帮助。

答案 5 :(得分:0)

在这种情况下我会避免使用正则表达式并做一些更容易的事情:

$path = rtrim($path, '/').'/';

编辑:

Woops,假设它是php ...