Regex 如何重写包含加号和特殊字符的url?

Regex 如何重写包含加号和特殊字符的url?,regex,url-rewriting,Regex,Url Rewriting,我们有一些需要重定向的传入URL,但是我们在使用包含pluses+的URL时遇到了问题 例如,任何传入的URL必须重定向到新站点的主页: /eng/news/2005+01+01.htm 应重定向到新站点的主页 /嗯/ 使用UrlRewriter.net,我们设置了一个规则,该规则适用于“正常”URL,但不适用于上述URL <redirect url="~/eng/(.+)" to="/en/index.aspx" /> 但是,如果我将传入URL更改为 /eng/news/2005

我们有一些需要重定向的传入URL,但是我们在使用包含pluses+的URL时遇到了问题

例如,任何传入的URL必须重定向到新站点的主页:

/eng/news/2005+01+01.htm

应重定向到新站点的主页

/嗯/

使用UrlRewriter.net,我们设置了一个规则,该规则适用于“正常”URL,但不适用于上述URL

<redirect url="~/eng/(.+)" to="/en/index.aspx" />
但是,如果我将传入URL更改为

/eng/news/2005-01-01.htm

有什么问题,有人能帮忙吗?

我不知道UrlRewriter.net,也不知道它使用的是哪种正则表达式语法。我给出了一些基于Perl正则表达式的提示

一开始的目的是什么?也许你的意思是^,即字符串的开头。 .+匹配重复一次或多次的任何字符;它与您想要的+符号不匹配 这是编写与URL匹配的Perl正则表达式的一种方法,URL以字符串/eng/开头,并包含+号:

^\/英语\/.\+*


我希望这能有所帮助。

为什么一开始就有一个~呢?UrlRewriter.net使用.net正则表达式语法-where。确实包含+字符-就像我体验过的其他正则表达式一样。此外,即使dot不包含加号,当他有多个+字符时,使用。*\+.*也不起作用,如示例所示。类似于[^\n]*的内容将是simpler@Peter布顿:你为什么说它不起作用?我想是这样的:如果我使用perl-pi-e'If/^\/eng\/.\+.*/{print yes\n;}或者{print no\n;}',我将/eng/news/2005+01+01.htm作为输入,我将得到yes作为输出。不包括+字符。如果你改变。对于示例表达式中的[^+],它不起作用,因为有两个+字符,并且只有一个经过测试/允许。.*和.*\+.*之间的唯一区别是后者必须至少包含一个+字符,而前者可以包含除换行符以外的任何字符,这无论如何都不应适用于URL重写。