正则表达式在.NET中遇到麻烦

时间:2015-10-19 10:51:35

标签: c# .net regex c#-4.0

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

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

但是,如果我在\\之后使用带有空格字符的正则表达式=\\\"([^\\ ]*)\\\"就可以了,但它找不到像tag=\"String with space\"那样的数据。 有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您使用的是常规字符串文字,因此\\]表示正则表达式引擎的\]。您的字符串包含[(开头字符类括号)但没有结束字符串。

添加空格时,只需将空格与字符类匹配。

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

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

请参阅regex demoan IDEONE demo

使用逐字字符串文字声明此正则表达式(这样我们只使用一个\来转义正则表达式元字符)并且还会正确匹配所有转义序列。

如果您不需要将类似C的字符串与转义序列匹配,只需使用

即可
var rx = "=\"([^\"]*)\"";

请参阅this regex demo(我认为使用常规字符串文字看起来效果更好 - 双引号太多。)