我有以下字符串(来自大型HTML字符串):
href="/cgi-bin/pin.cgi?pin=94841&sid=9548.1386389012.v1"><
这是我的代码:
var sids = Regex.Matches( htmlCode, "sid=(.)\">" );
我不会撤回任何结果。我的正则表达式是否正确?
答案 0 :(得分:1)
这应该是:
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个字符,通配符的问题是它们很难停止直到你到达行尾,所以除非必须,否则永远不要使用它们。
答案 1 :(得分:0)
.
仅匹配单个字符。要匹配多个字符,您应使用*
或+
修饰符:(.+)
;或者更优选的是非贪婪版本:(.+?)
如果可能,请使用@"verbatim string literal"
进行正则表达式。
var sids = Regex.Matches(htmlCode, @"sid=(.+?)""");
请参阅demo run。
答案 2 :(得分:0)
我认为你非常接近。考虑对你的正则表达式进行以下微小改动......
sid=.*?\">
祝你好运!