我想从网站中提取RTMP链接,并且到目前为止设法找到它所在的行:
string line = GetLine(innerHTML, "turbo:");
// The string line now contains something like this:
// turbo: 'rtmp://fcs21-1.somewebsite.com/reflect/2996910732;0',
Match match = Regex.Match(line, @"turbo: '(rtmp://[*]+);0',$",
RegexOptions.IgnoreCase);
string key;
if (match.Success)
key = match.Groups[1].Value;
没有任何比赛。我想从这一行中提取:
turbo: 'rtmp://fcs21-1.somewebsite.com/reflect/2996910732;0',
是这件作品:
rtmp://fcs21-1.somewebsite.com/reflect/2996910732
我在正则表达式中缺少什么?
答案 0 :(得分:4)
您的角色分类 - [*]
仅匹配*
,量词+
,匹配1个或更多*
,没有别的。显然它与你的字符串不匹配。
我猜你的意思是使用.*
来代替\n
匹配任何字符的0次或更多次。
尝试将正则表达式更改为:
"turbo: '(rtmp://.*);0',$"
甚至更好,根据您的文字以及您想要提取的内容,您只需使用:
"turbo: '([^;]*);0',$
答案 1 :(得分:1)
[*]
仅匹配*
。要匹配任何字符,请更喜欢.
。 (再
(实际上,.
无法匹配换行符。如果可能出现换行符,则更喜欢(.|\n)
的效果 - 请注意反斜杠需要转义。)
答案 2 :(得分:1)
试试这个:
Match match = Regex.Match(line, @"^turbo: '(rtmp://[^;]+);0',$", RegexOptions.IgnoreCase);
这将考虑带有^
符号的字符串的开头,匹配的选择将匹配任何非;
一直到实际;
的内容。 }。