Regex “如何忽略?”&引用;在正则表达式中?

Regex “如何忽略?”&引用;在正则表达式中?,regex,iis,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

我一直在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/(\??)(*)(.*)
,因为我知道问号允许忽略前面的字符,但这不起作用,我不确定如何处理。如有任何建议,将不胜感激。

请尝试:

^test01/\??(.*)
否则,您的
\??
将成为反向引用1,而您的查询字符串将成为反向引用2


更新

您可能还需要使用
+
的另一种含义:

^test01/\??+(.*)
不过,我不知道IIS是否支持这一点。和。

尝试:

^test01/\??(.*)
否则,您的
\??
将成为反向引用1,而您的查询字符串将成为反向引用2


更新

您可能还需要使用
+
的另一种含义:

^test01/\??+(.*)

不过,我不知道IIS是否支持这一点。和。

以下表达式应该有效

  ^test01/[?]?(.*)

下面的表达式应该有效

  ^test01/[?]?(.*)


test01/(*)
test01/?(*)
/test.asp?kw=test01&(*)
你说的“那不起作用”是什么意思?只是你忘了把
{R:1}
改成
{R:2}
?您得到了什么输出?它重定向到的页面使用了我试图附加的查询字符串的
src=url
部分。有了问号,它就正确地重定向到
test.asp?kw=test01
,但是
src=url
被忽略了。没有问号,一切都像我希望的那样工作,重定向到
test.asp?kw=test01&src=url
。我正在尝试接受两者。
test01/(*)
test01/?(*)
/test.asp?kw=test01&(*)
你说的“不起作用”是什么意思?只是你忘了把
{R:1}
改成
{R:2}
?您得到了什么输出?它重定向到的页面使用了我试图附加的查询字符串的
src=url
部分。有了问号,它就正确地重定向到
test.asp?kw=test01
,但是
src=url
被忽略了。没有问号,一切都像我希望的那样工作,重定向到
test.asp?kw=test01&src=url
。我试着接受两者。这与我写的完全相同,只是你使用了一个冗余字符类。是的,我知道。character类对某些人来说比较容易混淆,因为它不需要所有的转义;你的回答也没有给出解释。谢谢,我以后在回答时会记住这一点。这与我写的内容完全相同,只是你使用了一个冗余字符类。是的,我知道这一点。character类对某些人来说比较容易混淆,因为它不需要所有的转义;您的回答也没有给出解释。谢谢,我以后在回答时会记住这一点。
^test01/\??+(*)
出现错误:“表达式“^test01/\??+(*)”包含重复表达式(在大多数上下文中是“*”、“?”、“+”、“{”中的一个),前面没有表达式。”@jblasco:那么你的IIS不支持所有格量词。那么你认为有没有另一种方法可以简单地获取test01/之后的任何内容,排除问号,并将其设置为
{R:1}
?或者我只需要为
/-src=
/src=
写两条特定的规则。我不明白为什么它现在不应该工作。你试过我的第一个例子了吗?它正确地重定向到新页面,并且工作正常,没有问号,从
/test01/src=url
重定向到
/test.asp?kw=test01&src=url
。但是,当我添加问号时,查询字符串不起作用。例如,它重定向到
/test.asp?kw=test01
,但是查询字符串的其余部分丢失了。或者,我不知道“丢失”是什么意思,因为我实际上看不到url,但它们至少没有应用到页面上。
^test01/\?+(*)
出现错误“表达式“^test01/\??+(*)”包含一个重复表达式(大多数上下文中为“*”、“?”、“+”、“{”中的一个),该表达式前面没有表达式。”@jblasco:那么您的IIS不支持所有格量词。因此,您认为有没有其他方法可以简单地获取test01/之后的任何内容,不包括问号,并将其设置为
{R:1}
?或者我只需要为
/-src=
/src=
写两条特定的规则。我不明白为什么它现在不应该工作。你试过我的第一个例子了吗?它正确地重定向到新页面,并且工作正常,没有问号,从
/test01/src=url
重定向到
/test.asp?kw=test01&src=url
。但是,当我添加问号时,查询字符串不起作用。比如,它重定向到
/test.asp?kw=test01
,但是查询字符串的其余部分丢失了。或者,我不知道“丢失”是什么意思,因为我实际上看不到url,但它们至少没有应用到页面上。