我需要这个正则表达式=\\\"([^\\]*)\\\"
,但Visual Studio告诉我:
parsing "=\"([^\]*)\"" - Unterminated [] set.
但是,如果我在\\
之后使用带有空格字符的正则表达式=\\\"([^\\ ]*)\\\"
就可以了,但它找不到像tag=\"String with space\"
那样的数据。
有谁知道如何解决这个问题?
答案 0 :(得分:1)
您使用的是常规字符串文字,因此\\]
表示正则表达式引擎的\]
。您的字符串包含[
(开头字符类括号)但没有结束字符串。
添加空格时,只需将空格与字符类匹配。
要匹配=
后跟带引号的字符串,请使用
var rx = @"=""((?:[^""\\]*(?:\\.[^""\\]*)*))""";
使用逐字字符串文字声明此正则表达式(这样我们只使用一个\
来转义正则表达式元字符)并且还会正确匹配所有转义序列。
如果您不需要将类似C的字符串与转义序列匹配,只需使用
即可var rx = "=\"([^\"]*)\"";
请参阅this regex demo(我认为使用常规字符串文字看起来效果更好 - 双引号太多。)