如何改变这个:
Regex.Match(value, @"href=\""(.*?)\""",RegexOptions.Singleline);
这样它就会选择 href='foobar' (单引号 ') 以及选择 href="foobar" (双引号 ")??
如何改变这个:
Regex.Match(value, @"href=\""(.*?)\""",RegexOptions.Singleline);
这样它就会选择 href='foobar' (单引号 ') 以及选择 href="foobar" (双引号 ")??
您可以使用这样的模式:
href=(["'])(.*?)\1
这将匹配包含href=
后跟 a"
或'
后跟任意数量的字符(非贪婪)后跟之前在组 1 中匹配的相同字符的任何字符串。请注意,这\1
是一个反向引用。
另请注意,这也意味着您的属性内容将被捕获在第 2 组而不是第 1 组中。
现在,转义这个字符串文字的正确方法是这样的(使用常规字符串):
Regex.Match(value, "href=([\"'])(.*?)\\1", RegexOptions.Singleline);
或者像这样(使用逐字字符串):
Regex.Match(value, @"href=([""'])(.*?)\1", RegexOptions.Singleline);