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 "quotes"" />