C# 正则表达式在url中查找字符串,不区分大小写

C# 正则表达式在url中查找字符串,不区分大小写,c#,asp.net,regex,web-config,C#,Asp.net,Regex,Web Config,我有网址: http://primarydomain.com/sites/secondarydomain/?foo=bar 我可以使用什么正则表达式来匹配站点/secondarydomain的url?不区分大小写(这适用于web.config文件中的规则,但需要标准正则表达式) 为了将其放到上下文中,我正在编写一个web.config url重写规则,以从所有url中删除sites/secondarydomain(由于多个站点托管在同一个包中) 我的第二个域名在哪里 我想摆脱的道路是: 对于测

我有网址:

http://primarydomain.com/sites/secondarydomain/?foo=bar
我可以使用什么正则表达式来匹配
站点/secondarydomain
的url?不区分大小写(这适用于web.config文件中的规则,但需要标准正则表达式)

为了将其放到上下文中,我正在编写一个web.config url重写规则,以从所有url中删除
sites/secondarydomain
(由于多个站点托管在同一个包中)

我的第二个域名在哪里 我想摆脱的道路是:

对于测试,它作为一个目的地工作(因此也可以工作)

提前感谢您尝试一下lookback
(?尝试一下lookback
(?您尝试过:

更详细地说,这仅将正则表达式应用于路径,而不是根url:

 <rule name="TestRule">
     <match url=".*" />
     <conditions>
         <add input="{PATH_INFO}" pattern="^(/sites/secondarydomain)(/.*)"/>
     </conditions>
     <action type="Rewrite" url="\{C:2}" appendQueryString="true" />
 </rule>

您是否尝试过:

更详细地说,这仅将正则表达式应用于路径,而不是根url:

 <rule name="TestRule">
     <match url=".*" />
     <conditions>
         <add input="{PATH_INFO}" pattern="^(/sites/secondarydomain)(/.*)"/>
     </conditions>
     <action type="Rewrite" url="\{C:2}" appendQueryString="true" />
 </rule>


如果域始终是,那么我会这样攻击它:


匹配url=”http://primarydomain.com/sites/([A-Za-z0-9_]+)/.*;

如果域总是会存在,那么我会像这样攻击它:


匹配url=”http://primarydomain.com/sites/([A-Za-z0-9_]+)/.*;

一个组合lookback和lookahead将匹配您想要的字符串:

(?<=.\w+/)\w+/\w+(?=/.*)
从未进行过IIS重写,所以YMMV。这两个正则表达式在您迄今为止给出的示例和更通用的URL上确实有效(经过测试),如:

http://primarydomain.com/hostedsites/clemones_htdocs/index.aspx?foo=bar
http://anydomain.net/sites/secondarydomain/index.aspx?foo=bar
...

lookback和lookahead的组合将匹配所需的字符串:

(?<=.\w+/)\w+/\w+(?=/.*)
从未进行过IIS重写,所以YMMV。这两个正则表达式在您迄今为止给出的示例和更通用的URL上确实有效(经过测试),如:

http://primarydomain.com/hostedsites/clemones_htdocs/index.aspx?foo=bar
http://anydomain.net/sites/secondarydomain/index.aspx?foo=bar
...


你的问题似乎有点模棱两可。你是在试图匹配sites/secondarydomain和根更改,还是担心querystring?最后是foo?还是secondary domain是需要正则表达式的更改字段?好的,我想我已经添加了一些说明“secondary domain是需要正则表达式的更改字段”是正确的。你呢r问题似乎有点模棱两可。您是在尝试匹配站点/secondarydomain和根更改,还是担心查询字符串?最后是foo?还是secondary domain是需要正则表达式的更改字段?好的,我想我已经添加了一些说明“secondary domain是需要正则表达式的更改字段”是正确的。这是does看起来不错……但是Visual Studio对“尝试用
&;
替换它”感到不高兴,我想你是想尝试替换
我担心它仍然无法工作,因为它逃脱了“哈哈哈,是的,
这对某些人来说一定是一个非常奇怪的拼写错误。我能说的是我知道.NET的正则表达式语法。我不知道怎么做web.config可以处理正则表达式,甚至是web.config要找的东西。这看起来确实不错……但是Visual Studio对“尝试用
替换它&;
感到不高兴,我想你是想尝试替换
我恐怕它仍然无法工作,因为它逃脱了“哈哈哈,是的,
那一定是一个v”对于一些人来说,这是一个非常奇怪的输入错误。我只能说我知道.NET的正则表达式语法。我不知道web.config如何处理正则表达式,甚至不知道web.config具体在寻找什么。-1.这不起作用,因为字符串的开始和结束断言。除非web.config正则表达式有什么特别之处(对此我持怀疑态度)我已经尝试过了,是的,swannee…但我想我想要一个接近这个的解决方案-我应该使用什么来代替“^”字符(在字符串中匹配,而不是在它的开头)?我已经详细说明了我的回答。是的,这比将正则表达式应用于整个url要复杂得多。@Legatou:谢谢你恢复了我的荣誉!:)@swannee没问题。事实上,令人尴尬的是,你对我们正在讨论的内容的了解比我用拇指向你翻过来时要多>>-1。这不起作用,因为字符串的开头和结尾断言。除非web.config regex解释器有什么特别之处(我对此表示怀疑)我试过这个,是的,斯旺尼……但我想我想要一个接近这个的解决方案-我应该用什么来代替“^”字符(在字符串中匹配而不是在它的开头)?我已经详细阐述了我的回答。是的,它比只对整个url应用正则表达式更复杂。@Legatou:谢谢你恢复我的荣誉!)@swannee没问题。事实上,你比我拒绝你的时候更了解我们正在谈论的内容,这有点尴尬>>如果他想在正则表达式匹配中包含域和查询字符串,你是对的。但他不是这么说的;)如果他想在正则表达式匹配中包含域和查询字符串,你是对的。但他不是这么说的;)