Perl Regex URL包含字符串但不是类似的字符串

时间:2013-04-24 12:36:25

标签: regex perl

我需要为Perl编写正则表达式,以便它匹配/contact(以及除了/ contact / talk等之外的所有内容)。

但我也有/contacts的网址,所以我希望它跳过这个。

到目前为止,我只能为完全匹配或

编写代码

这就是:

if ($uri =~ m/contact/i ) {
   ## Redirect somewhere
}

这也会重定向/contacts内的所有内容,尽管这是我正在努力的地方。

5 个答案:

答案 0 :(得分:1)

if ($uri =~ m!/contact(?:/|$)!) {
  #
}

答案 1 :(得分:0)

if ($uri =~ m/\/contact(?:$|\/)/i ) {
  ## Redirect somewhere
}

由于/contact而匹配$,以及/contact/...等所有内容

答案 2 :(得分:0)

\b是一个字边界标记,可以防止此匹配位于单词的中间位置:

if ($uri =~ m|\bcontact\b|i ) {
   ## Redirect somewhere
}

我会将它添加到开头和结尾,因此您也不匹配foocontact。或者你可以确保斜线在接触之前。

if ($uri =~ m|/contact\b|i ) {
   ## Redirect somewhere
}

答案 3 :(得分:0)

尝试:

echo -e "/contacts/qqq\n/contact\n/contact/talk\n/ConTact\n/contactx/"|
perl -ne 'm{/contact(?:/|$)} and print'

输出:

/contact
/contact/talk

答案 4 :(得分:0)

/^\/contact\//

涉及一些猜测 - 看来您的网址以/contact开头,如果不是,请删除初始插入广告。