Perl样式正则表达式 - 条件输出

时间:2014-06-26 17:28:32

标签: regex

场景:我需要检查文件路径是否包含特定文件夹。如果是,则不输出任何内容,否则显示错误消息。 如何使用perl正则表达式(input/regex/merge/flags)执行此条件输出? 到目前为止我得到了什么:

example-path:bin/user/projects/prjx/src/lib/detail/file.txt TM_FILEPATH/(src)?(?(1)true|false)/$1/g但是,这是条件匹配,而不是条件输出

编辑#1:我需要在perl风格的正则表达式中执行此操作,而不是在perl中执行此操作。

2 个答案:

答案 0 :(得分:1)

假设您要检查的文件夹是src

if ($filepath !~ m:(^|/)src(/|$):) {
    print STDERR "Error message\n";
}

答案 1 :(得分:1)

它被称为Conditional insertions

${TM_FILEPATH/(.*\/(src)?\/.*)+|(.+)/?1:#true:#false/i}

${                          
    TM_FILEPATH             // variable input
    /                       // delimiter
    (.*\/(src)\/.*)         // find either a folder /src/
    +                       // at least once
    |                       // or
    (.+)                    // consume the whole input
    /                       // delimiter
    ?1:                     // when match 1 is set
    #true                   // print this
    :#false                 // (optional) else print this
    /                       // delimiter
    i                       // flags
}                           

所以结构基本上是这样的:

${variable/(regex-pattern)+|(.+)/?1:yes-output:no-output/flags}