. net中的正则表达式问题

本文关键字:问题 正则表达式 net | 更新日期: 2023-09-27 18:18:14

我需要这个正则表达式='''"([^'']*)'''",但是Visual Studio告诉我:

parsing "='"([^']*)'"" - Unterminated [] set.

但是,如果我使用这个正则表达式与空格字符后''像这个='''"([^'' ]*)'''"它工作,但没有找到像tag='"String with space'"的数学。有人知道如何解决这个问题吗?

. net中的正则表达式问题

您使用的是常规字符串字面值,因此'']对于regex引擎意味着']。您的字符串包含[(开始字符类括号),但没有结束字符。

当你添加一个空格时,你只需要将空格与字符类匹配。

要匹配=后面带引号的字符串,请使用

var rx = @"=""((?:[^""'']*(?:''.[^""'']*)*))""";

参见regex demo和IDEONE demo。

这个regex是用一个逐字字符串字面值声明的(这样我们就只用一个'来转义regex元字符),并且也会正确匹配所有转义的序列。

如果不需要用转义序列匹配类c字符串,只需使用

var rx = "='"([^'"]*)'"";

查看这个regex演示(我认为使用常规字符串文字看起来更好-太多双引号)