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

本文关键字:字符串 之间 用于 两个 正则表达式 | 更新日期: 2023-09-27 18:37:05

来自这样的字符串

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";

http://fiddle.re/cyy8d