Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不是';这个正则表达式不起作用吗?_C#_Regex - Fatal编程技术网

C# 为什么不是';这个正则表达式不起作用吗?

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); 您最初发布的内容是错误的,因为“.”作为一个通配符,而您显

我有以下字符串(来自一个大的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);

您最初发布的内容是错误的,因为“.”作为一个通配符,而您显示它的方式意味着它只能捕获1个字符。通配符的问题是,在到达行尾之前,它们很难停止,因此除非必须使用,否则永远不要使用它们。

仅匹配单个字符。要匹配多个字符,应使用
*
+
修饰符:
(.+)
;或者更优选非贪婪版本:
(.+?)

如果可能,对正则表达式使用
@“逐字字符串文字”

var sids = Regex.Matches(htmlCode, @"sid=(.+?)""");

看。

我想你很接近了。考虑一下你的正则表达式下面的微小变化……/P>
sid=.*?\">
祝你好运

var sids = Regex.Matches(htmlCode, @"sid=(.+?)""");
sid=.*?\">