正则表达式匹配URL的片段

时间:2012-04-12 13:58:22

标签: c# regex

我的网址如下:

http://127.0.0.1:81/controller/verbOne/ NXw4fDF8MXwxfDQ1 ?源= DDDD

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

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

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

由于

4 个答案:

答案 0 :(得分:3)

您可以使用Uri

的内置功能,而不是使用正则表达式
Uri uri = new Uri("http://127.0.0.1:81/controller/verbOne/NXw4fDF8MXwxfDQ1?source=dddd");

var lastSegment = uri.Segments.Last();

答案 1 :(得分:0)

您正在寻找UriPath类:

Path.GetFileName(new Uri(str).AbsolutePath)

答案 2 :(得分:0)

为什么要寻找正则表达式?你可以查找两个字符串元素“verbOne /”或“verbTwo /”并从末尾创建一个子字符串。然后你可以寻找剩下的部分并用'?'来消除部分。

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

krikit

答案 3 :(得分:0)

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

(?<=http://127\.0\.0\.1:81/controller/verb(One|Two)/)[a-zA-Z0-9]*