Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
.net 用于提取元标记的c#正则表达式存在问题_.net_Regex - Fatal编程技术网

.net 用于提取元标记的c#正则表达式存在问题

.net 用于提取元标记的c#正则表达式存在问题,.net,regex,.net,Regex,我有一个正则表达式,它从HTML文档中提取元标记,但当我将它合并到web应用程序中时,它会给我带来错误 表达式是 @"<meta[\\s]+[^>]*?name[\\s]?=[\\s\"\']+(.*?)[\\s\"\']+content[\\s]?=[\\s\"\']+(.*?)[\"\']+.*?>" ; @“]*?名称[\\s]?=[\\s\“\']+(.*?[\\s\“\']]++内容[\\s]?=[\\s\“\']+(.*?[\“\']+.>”; 有什么问题吗?您

我有一个正则表达式,它从HTML文档中提取元标记,但当我将它合并到web应用程序中时,它会给我带来错误

表达式是

@"<meta[\\s]+[^>]*?name[\\s]?=[\\s\"\']+(.*?)[\\s\"\']+content[\\s]?=[\\s\"\']+(.*?)[\"\']+.*?>" ;
@“]*?名称[\\s]?=[\\s\“\']+(.*?[\\s\“\']]++内容[\\s]?=[\\s\“\']+(.*?[\“\']+.>”;
有什么问题吗?

您在发布的示例中同时使用@(逐字字符串)语法和转义斜杠。您需要删除@,或者删除额外的斜杠,并通过将双引号加倍来转义双引号,这样就可以了


(值得一提的是,如果您打算持续使用正则表达式,我建议您投资一份。)

当使用字符串文字(@“”)时,您不需要将反斜杠加倍—字符串中的所有内容都按原样接受—除了需要加倍的双引号:


@“]*?名称[\s]?=[\s”“']+(.*?[\s”“”]+内容[\s]?=[\s”“]+(.*?[']+.*”

杰罗米是对的。您使用的是转义字符串和literal字符串。正则表达式本身很好。。。所以我想这就是问题所在

正则表达式看起来有效。如果您发布了一些抛出错误的示例代码,这会有所帮助。如果您实际声明了regexp给您的错误,那就更好了。还有可能是更大一点的代码示例,在错误发生的那一行。regex还将解析无效的输入(例如,它们被称为“逐字字符串”。RegexBuddy的好处之一是,在帮助您创建正确的regex之后,它可以以您需要的任何格式导出regex,包括C#逐字字符串。