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