Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式将URL与可选的通配符进行比较(http://example.com/user/*/(个人资料)_C#_Asp.net_Regex - Fatal编程技术网

C# 正则表达式将URL与可选的通配符进行比较(http://example.com/user/*/(个人资料)

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/*/*/*/删除(举个例子,这取决于站点…因此应支持所有可能性) 关于如何做到这一点,有什么想法或建议吗?我正在考虑为任何字符获取正则表达式代码,并用正则表达式代码替换

我有一个用户指定的URL,其中有一个通配符,例如
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被翻译成一个等价的正则表达式,其中
*
通配符被翻译成
*
。在您的情况下,您将使用类似于
[^/]+
的内容替换
*

这种方法的唯一问题是必须转义所有正则表达式控制字符,因此需要将
替换为
\。
[
替换为
\[
,以此类推