2012-04-12 15 views
0

我有网址,如:?正则表达式匹配的URL的片段

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

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

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

任何人都可以帮助我的正则表达式?

感谢

+0

PS:我使用C#.NET。 – user1005796 2012-04-12 13:59:44

回答

3

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

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

var lastSegment = uri.Segments.Last(); 
+0

@ L.B似乎他说他想用粗体提取部分 - “verbOne”和“verbTwo”并不粗体,是吗? (他们可能只有两种可能性) – 2012-04-12 14:08:50

0

您正在寻找的UriPath类:

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

为什么功能你寻找一个正则表达式?您可以查找两个字符串元素“verbOne /”或“verbTwo /”,并从末尾生成一个子字符串。然后你可以查找其余部分,并用'?'替代部分。

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

krikit

0

虽然每个人都在这里是正确的,正则表达式是不是最佳的解决方案,因为当解析器存在就应该永远不会失败,因为它们的专业化它可能会失败,我相信你可以使用下面的正则表达式:

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