C# 为什么不是';这个正则表达式不起作用吗?
我有以下字符串(来自一个大的HTML字符串):C# 为什么不是';这个正则表达式不起作用吗?,c#,regex,C#,Regex,我有以下字符串(来自一个大的HTML字符串): 我不会收回任何结果。我的正则表达式正确吗?应该是这样的: var str = @"href=""/cgi-bin/pin.cgi?pin=94841&sid=9548.1386389012.v1"">"; var sid = Regex.Match(str, @"sid=([^""]*)"); Console.WriteLine (sid.Groups[1].Value); 您最初发布的内容是错误的,因为“.”作为一个通配符,而您显
我不会收回任何结果。我的正则表达式正确吗?应该是这样的:
var str = @"href=""/cgi-bin/pin.cgi?pin=94841&sid=9548.1386389012.v1"">";
var sid = Regex.Match(str, @"sid=([^""]*)");
Console.WriteLine (sid.Groups[1].Value);
您最初发布的内容是错误的,因为“.”作为一个通配符,而您显示它的方式意味着它只能捕获1个字符。通配符的问题是,在到达行尾之前,它们很难停止,因此除非必须使用,否则永远不要使用它们。
仅匹配单个字符。要匹配多个字符,应使用*
或+
修饰符:(.+)
;或者更优选非贪婪版本:(.+?)
如果可能,对正则表达式使用@“逐字字符串文字”
var sids = Regex.Matches(htmlCode, @"sid=(.+?)""");
看。我想你很接近了。考虑一下你的正则表达式下面的微小变化……/P>
sid=.*?\">
祝你好运
var sids = Regex.Matches(htmlCode, @"sid=(.+?)""");
sid=.*?\">