我需要为 Perl 编写正则表达式以使其匹配/contact
(以及 /contact/talk 等之外的所有内容)。
但我也有 URL,/contacts
所以我希望它跳过这个。
到目前为止,我只能为完全匹配或为
所以类似于:
if ($uri =~ m/contact/i ) {
## Redirect somewhere
}
这也重定向/contacts
了我正在努力的所有内容。
if ($uri =~ m!/contact(?:/|$)!) {
#
}
尝试:
echo -e "/contacts/qqq\n/contact\n/contact/talk\n/ConTact\n/contactx/"|
perl -ne 'm{/contact(?:/|$)} and print'
输出:
/contact
/contact/talk
if ($uri =~ m/\/contact(?:$|\/)/i ) {
## Redirect somewhere
}
将匹配/contact
因为$
, 和一切喜欢/contact/...
\b
是一个单词边界标记,它可以防止这个匹配出现在单词的中间:
if ($uri =~ m|\bcontact\b|i ) {
## Redirect somewhere
}
我会把它添加到开头和结尾,所以你也不匹配foocontact
。或者你可以确保在接触之前有一个斜线。
if ($uri =~ m|/contact\b|i ) {
## Redirect somewhere
}
/^\/contact\//
涉及一些猜测 - 您的网址似乎以 开头/contact
,如果没有,请删除初始插入符号。