Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带引号的字符串的正则表达式_C#_Regex - Fatal编程技术网

C# 带引号的字符串的正则表达式

C# 带引号的字符串的正则表达式,c#,regex,C#,Regex,我有一个字符串,格式如下 Key1="value1" Key2="value2" Key3="value3" 我想从字符串中提取键和值。 “值”可以包含新行、单引号、双引号等 s = @"interactionId=""1f367d11-1f9d-4ff4-9fa3-e793dc0f7fe4"" timestamp=""2018-08-07T18:25:38.8309683Z"" textPayload=""#"" activityJson=""{ ""type"": ""conversa

我有一个字符串,格式如下

Key1="value1" Key2="value2" Key3="value3"
我想从字符串中提取键和值。 “值”可以包含新行、单引号、双引号等

s = @"interactionId=""1f367d11-1f9d-4ff4-9fa3-e793dc0f7fe4"" timestamp=""2018-08-07T18:25:38.8309683Z"" textPayload=""#"" activityJson=""{
  ""type"": ""conversationUpdate"",
  ""id"": ""e3abig35e395"",
  ""timestamp"": ""2018-08-07T18:25:15.415+00:00"",
  ""localTimestamp"": ""2018-08-07T11:25:15-07:00""";
我能写这个。但当值中有引号时,它确实起作用

var ItemRegex = new Regex(@"(?<key>[^, ]+)=(?<value>[""].+?[""]|[^ ]+)", RegexOptions.Multiline);

result = 
                ItemRegex.Matches(message)
                .Cast<Match>()
                .Select(m => new
                {
                    key = m.Groups["key"].ToString().Trim('"'),
                    value = m.Groups["value"].ToString().Trim('"')
                })
                .ToDictionary(kvp => kvp.key, kvp => kvp.value);
var ItemRegex=new Regex(@“(?[^,]+)=(?[”“].+?[”“]|[^]+)”,RegexOptions.Multiline);
结果=
ItemRegex.Matches(消息)
.Cast()
.选择(m=>new
{
key=m.Groups[“key”].ToString().Trim(“”),
value=m.Groups[“value”].ToString().Trim(“”)
})
.ToDictionary(kvp=>kvp.key,kvp=>kvp.value);

如何转义引号?

问题在于输入数据;
activityJson
的值中有未替换的引号,因此很难确定数据的结尾

如果您能够更改输入数据,您肯定应该这样做

例如,在xml中,双引号用
”转义:


<data attrib="value with &quot;quotes&quot;" />