正则表达式可能出现多次的两个已知标记之间的子字符串

时间:2013-10-28 16:03:01

标签: c# regex

来自这样的字符串

http://a.b.c.d:1521/myApp/unreachable.stream/manifest.f4m?DVR

如何仅使用正则表达式提取“.stream”之间的部分和“.stream”之前的第一次出现“/”。上面的例子中“无法访问”?

3 个答案:

答案 0 :(得分:3)

以下是regex的示例:

var match = Regex.Match(myStr, @"/([^/]+)\.stream\b");
string extracted = match.Groups[1].Value;
Console.WriteLine(extracted); // "unreachable"

答案 1 :(得分:1)

不需要正则表达式:

string result = url.Split('/').Where(s => s.EndsWith(".stream"))
                     .Select(s => s.Substring(0, s.Length - 7 /*".stream".Length*/)
                     .FirstOrDefault();

如果必须使用正则表达式:

string regex = "([^/]+?)\\.stream";

http://fiddle.re/cyy8d

答案 2 :(得分:1)

好吧,如果您的输入将是那样的URI ......

var uri = new Uri(@"http://a.b.c.d:1521/myApp/unreachable.stream/manifest.f4m?DVR");

var streamSegment = uri.Segments.FirstOrDefault(a => a.Contains(".stream")) ?? "";

var result = streamSegment.Split('.').First().Dump();