C# 正则表达式将URL与可选的通配符进行比较(http://example.com/user/*/(个人资料)
我有一个用户指定的URL,其中有一个通配符,例如C# 正则表达式将URL与可选的通配符进行比较(http://example.com/user/*/(个人资料),c#,asp.net,regex,C#,Asp.net,Regex,我有一个用户指定的URL,其中有一个通配符,例如http://example.com/project/*/账户 在本例中,*可以是任何东西,数字、字符或其他任何东西 我想找一个能匹配的正则表达式。通配符*的位置发生变化,可能是http://example.com/user/*/标题或http://example.com/user/*/*/*/删除(举个例子,这取决于站点…因此应支持所有可能性) 关于如何做到这一点,有什么想法或建议吗?我正在考虑为任何字符获取正则表达式代码,并用正则表达式代码替换
http://example.com/project/*/账户
在本例中,*可以是任何东西,数字、字符或其他任何东西
我想找一个能匹配的正则表达式。通配符*的位置发生变化,可能是http://example.com/user/*/标题
或http://example.com/user/*/*/*/删除
(举个例子,这取决于站点…因此应支持所有可能性)
关于如何做到这一点,有什么想法或建议吗?我正在考虑为任何字符获取正则表达式代码,并用正则表达式代码替换所有出现的*。然后将其与当前URL进行比较,查看是否匹配。您可以使用进行匹配
而不是这个
http://example.com/user/*/title
你必须这样做
http://example.com/user/{userId}/title
您应该能够找到它的C#版本,或者能够参考java代码自己构建它
这里有一个指向java的链接
但是,如果您希望匹配*而不是使用URI模板,请将所有出现的
'*'
替换为'(.*)
,并使用新替换的URI创建一个regexp。然后做一个regexp测试
或匹配
我认为你的想法应该行得通
这与在Python标准库中实现glob的方式相同。glob被翻译成一个等价的正则表达式,其中*
和?
通配符被翻译成*
和
。在您的情况下,您将使用类似于[^/]+
的内容替换*
这种方法的唯一问题是必须转义所有正则表达式控制字符,因此需要将
替换为\。
和[
替换为\[
,以此类推