0

如何改变这个:

Regex.Match(value, @"href=\""(.*?)\""",RegexOptions.Singleline);

这样它就会选择 href='foobar' (单引号 ') 以及选择 href="foobar" (双引号 ")??

4

1 回答 1

2

您可以使用这样的模式:

href=(["'])(.*?)\1

这将匹配包含href=后跟 a"'后跟任意数量的字符(非贪婪)后跟之前在组 1 中匹配的相同字符的任何字符串。请注意,这\1是一个反向引用

另请注意,这也意味着您的属性内容将被捕获在第 2 组而不是第 1 组中。

现在,转义这个字符串文字的正确方法是这样的(使用常规字符串):

Regex.Match(value, "href=([\"'])(.*?)\\1", RegexOptions.Singleline);

或者像这样(使用逐字字符串):

Regex.Match(value, @"href=([""'])(.*?)\1", RegexOptions.Singleline);
于 2016-04-18T20:11:29.133 回答