我需要为Perl编写正则表达式,以便它匹配/contact
(以及除了/ contact / talk等之外的所有内容)。
但我也有/contacts
的网址,所以我希望它跳过这个。
到目前为止,我只能为完全匹配或
编写代码这就是:
if ($uri =~ m/contact/i ) {
## Redirect somewhere
}
这也会重定向/contacts
内的所有内容,尽管这是我正在努力的地方。
答案 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
开头,如果不是,请删除初始插入广告。