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