正则表达式:获取两个斜杠之间的子字符串
本文关键字:之间 字符串 两个 获取 正则表达式 | 更新日期: 2023-09-27 17:55:04
给定字符串
http://stackoverflow.com/questions/ask/index.php
我想获得第三个斜杠(.*?)
和最后一个斜杠之间的子字符串,即:
questions/ask
如何在c#中使用正则表达式完成此操作?
您可以查看Uri.Segments
属性
Uri uriAddress1 = new Uri("http://www.contoso.com/title/index.htm");
Console.WriteLine("The parts are {0}, {1}, {2}", uriAddress1.Segments[0],
uriAddress1.Segments[1], uriAddress1.Segments[2]);
产生以下输出:
The parts are /, title/, index.htm
Uri uri = new Uri("http://stackoverflow.com/questions/ask/index.php");
string result = uri.Segments[1] + uri.Segments[2];
result = result.Remove(result.Length - 1);
Console.WriteLine(result);
Uri url = new Uri("http://stackoverflow.com/questions/ask/index.php");
string s = string.Join("", url.Segments.Take(url.Segments.Length - 1)).Trim('/');
尝试使用现有的Uri和Path类代替字符串匹配和正则表达式。比如:
Path.GetDirectoryName(new Uri(url).AbsolutePath)
正确的方法是使用Uri对象。
Uri u = new Uri("http://stackoverflow.com/questions/ask/index.php");
string[] s = u.Segments;
其他答案才是正确的。但如果你仍然在寻找正则表达式,这个应该工作:
([^/]*/[^/]*)/[^/]*$
您要查找的路径在第一个子匹配中