Regex Perl正则表达式URL包含字符串,但不包含类似的字符串
我需要为Perl编写正则表达式,以便它匹配Regex Perl正则表达式URL包含字符串,但不包含类似的字符串,regex,perl,Regex,Perl,我需要为Perl编写正则表达式,以便它匹配/contact(以及so/contact/talk以外的所有内容) 但是我还有/contacts的URL,所以我希望它跳过这个 到目前为止,我只能为精确匹配或精确匹配编写代码 因此,大致如下: if ($uri =~ m/contact/i ) { ## Redirect somewhere } 这也重定向了/contacts中的所有内容,尽管这正是我努力的方向 if ($uri =~ m/\/contact(?:$|\/)/i ) { #
/contact
(以及so/contact/talk以外的所有内容)
但是我还有/contacts
的URL,所以我希望它跳过这个
到目前为止,我只能为精确匹配或精确匹配编写代码
因此,大致如下:
if ($uri =~ m/contact/i ) {
## Redirect somewhere
}
这也重定向了/contacts
中的所有内容,尽管这正是我努力的方向
if ($uri =~ m/\/contact(?:$|\/)/i ) {
## Redirect somewhere
}
将匹配<代码> /联系人< /代码>,因为<代码> $< /代码>,并且所有类似“代码> /联系人/…< /代码>
< p> <代码> \b/COD>是一个单词边界标记,它阻止了该匹配在单词的中间:if ($uri =~ m|\bcontact\b|i ) {
## Redirect somewhere
}
我会将其添加到开头和结尾,因此您也不会匹配foocontact
。或者,您可以确保在contact之前有一个斜杠
if ($uri =~ m|/contact\b|i ) {
## Redirect somewhere
}
尝试:
输出:
/contact
/contact/talk
这里有一些猜测-您的URL似乎以
/contact
开头,如果没有,请删除初始插入符号。是的。。我在5分钟前发布了:/@Loamhoof::)对不起,检查结果花了时间。。。我不认为有太多的差异来解决这个问题……URI应该是区分大小写的(至少是路径部分),不是吗?
echo -e "/contacts/qqq\n/contact\n/contact/talk\n/ConTact\n/contactx/"|
perl -ne 'm{/contact(?:/|$)} and print'
/contact
/contact/talk
/^\/contact\//