【发布时间】:2018-10-15 14:14:37
【问题描述】:
我正在尝试将带引号的字符串与被接受的文字引号相匹配,例如:
"message\""
@"message"
与
@(["'])[\S\s]*?\1|(["'])(?:\\\2|(?!\\\2)(?!\2).)*\2
但对于
"消息:\"" + 消息 + "\"
.NET 中的内置正则表达式仅匹配 "message: \" 而不是 "message: \"",就像它应该根据在线匹配器一样:
有人知道如何让它正常工作吗?
.NET 代码:
string pattern = "([\"'])[\\S\\s]*?\\1|([\"'])(?:\\\\\\2|(?!\\\\\\2)(?!\\2).)*\\2";
string test = "\"message: \\\"\" + message + \"\\\".\n";
MatchCollection matches = Regex.Matches(test, pattern);
【问题讨论】:
-
对我来说,这看起来像XY Problem。您是否尝试使用正则表达式解析 JSON?
-
不,它是一个巨大项目的翻译。 X 问题是:如何用 .NET Regex 匹配字符串?
-
显示重现问题的代码。您是否使用逐字字符串文字?
-
@WiktorStribiżew 我编辑显示代码。
-
您没有转义反斜杠模式。