0

我有这样的网址:

http://127.0.0.1:81/controller/verbOne/NXw4fDF8MXwxfDQ1 ?source= dddd

或者

http://127.0.0.1:81/controller/verbTwo/ NXw4fDF8MXwxfDQ1

我想用粗体提取那部分。主机和端口可以更改为任何内容(当我将其发布到实时服务器时,它会更改)。控制器永远不会改变。而对于动词部分,有两种可能。

任何人都可以帮助我使用正则表达式吗?

谢谢

4

4 回答 4

3

而不是使用正则表达式,您可以使用的内置功能Uri

Uri uri = new Uri("http://127.0.0.1:81/controller/verbOne/NXw4fDF8MXwxfDQ1?source=dddd");

var lastSegment = uri.Segments.Last();
于 2012-04-12T14:01:23.263 回答
0

您正在寻找UriPath类:

Path.GetFileName(new Uri(str).AbsolutePath)
于 2012-04-12T14:01:01.380 回答
0

为什么要寻找正则表达式?您可以查找两个字符串元素“verbOne/”或“verbTwo/”并从末尾创建一个子字符串。然后您可以查找其余部分并用“?”减去该部分。

我认为这比正则表达式更快。

克里基特

于 2012-04-12T14:02:53.157 回答
0

尽管这里的其他人都认为正则表达式不是最佳解决方案是正确的,因为当解析器已经存在并且由于其专业化而永远不会失败时,它可能会失败,我相信您可以使用以下正则表达式:

(?<=http://127\.0\.0\.1:81/controller/verb(One|Two)/)[a-zA-Z0-9]*
于 2012-04-12T14:06:58.430 回答