在我的asp.net应用程序中,我有网址www.site.com/rugby来匹配它我有正则表达式
“〜/(.+)”完美无缺。但如果我再次导航到www.site.com/login.aspx,正则表达式匹配此表达式“/(.+)".
简单来说,我想要一个只能与extenionless url匹配的正则表达式。如果网址中存在IF扩展名,则表示感谢
<RewriterRule>
<LookFor>~/(.+)/(.+)/(.+)/</LookFor>
<SendTo>~/Shop/Item.aspx?cn=&1&it=$2&ft=$3</SendTo>
</RewriterRule>
答案 0 :(得分:1)
实际上.Net似乎有一个你应该使用的内置URI解析器。绝对没有的原因是使用正则表达式重新发明轮子。
查看此网站以获取示例:http://cf-bill.blogspot.com/2008/07/c-parsing-url-for-its-component-parts.html此处的文档:http://msdn.microsoft.com/en-us/library/system.uri.aspx
编辑:我重新阅读了您的问题,这可能不是您想要的,我建议您尝试更清楚地重写您的问题。
答案 1 :(得分:0)
/([^?\.]*)(\?.*)?$
适用于以下各项:
/Shop/Item.aspx?cn=&1&it=$2&ft=$3
/Shop/Item?cn=&1&it=$2&ft=$3
/Shop/Item.aspx
/Shop/Item
该正则表达式的翻译(由“正则表达式工作台”提供)
/
Capture
Any character not in "?\."
* (zero or more times)
End Capture
Capture
?
. (any character)
* (zero or more times)
End Capture
? (zero or one time)
$ (anchor to end of string)
答案 2 :(得分:0)
你可以试试这个正则表达式。
/([^?\./]*)(?![^?\./]*[?\.])
它应该只匹配路径组件而不匹配文件。
对于这些Url's:
/Shop/Item.aspx?cn=&1&it=$2&ft=$3
/Shop/Item?cn=&1&it=$2&ft=$3
/Shop/Item.aspx
/Shop/Item
前三个将返回一个匹配,即“Shop”,但最后一个将返回“Shop”和“Item”