如何忽略“?”在正则表达式?

时间:2011-08-25 14:54:28

标签: regex iis

我一直在IIS中使用正则表达式进行重定向,这样如果有人访问/test01/,它会将它们重定向到/test.asp?kw=test01。但是,我仍然希望能够附加查询字符串,以便/test01/src=url重定向到/test.asp?kw=test01&src=url

这很容易做到,但我想要的是他们可以使用/test01/src=url/test01/?src=url,所以正则表达式足够聪明,可以忽略问号。

我一直在使用:^test01/(.*)重定向到/test.asp?kw=test01&{R:1}。我已经尝试了^test01/(\??)(.*),理解是问号允许忽略前面的字符,但这不起作用,我不确定如何处理这个问题。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

尝试:

^test01/\??(.*)

否则,您的\??是反向引用#1,您的查询字符串将成为反向引用#2。


<强>更新

也可能需要disable back-tracking,使用+的另一个含义:

^test01/\??+(.*)

我不知道IIS是否支持此功能。并PHP's engine doesn't seem to need it

答案 1 :(得分:0)

以下表达式应该有效。

  ^test01/[?]?(.*)