このような文字列から
http://a.b.c.d:1521/myApp/unreachable.stream/manifest.f4m?DVR
「.stream」と「.stream」の前の「/」の最初の出現の間の部分のみを正規表現で抽出するにはどうすればよいですか。たとえば、上記の例では「到達不能」です。
正規表現を使用した例を次に示します。
var match = Regex.Match(myStr, @"/([^/]+)\.stream\b");
string extracted = match.Groups[1].Value;
Console.WriteLine(extracted); // "unreachable"
入力がそのような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();
正規表現は必要ありません:
string result = url.Split('/').Where(s => s.EndsWith(".stream"))
.Select(s => s.Substring(0, s.Length - 7 /*".stream".Length*/)
.FirstOrDefault();
正規表現を使用する必要がある場合:
string regex = "([^/]+?)\\.stream";