我有搜索查询
string input = "FirstName=\"xy z\" LastName=\"Huber\"";
想用正则表达式拆分它
我想要一个带有以下标记的字符串数组:
FirstName=\"xy z\"
LastName=\"Huber\"
如您所见,标记用双引号保留空格
我的正则表达式
("[^"]+"|\w+)\s*
几乎不想要我想要..需要修复更多它得到
FirstName= \"xy z\" LastName = \"Huber\"
更改 I4V 的答案以匹配 OP 要求
似乎 OP 想要字符串 FirstName=\"xy z\"
而LastName=\"Huber\"
不是键值对,因此解决方案是简单地使用 I4V 正则表达式中的匹配项。
string input = "FirstName=\"xy z\" LastName=\"Huber\"";
var matches = Regex.Matches(input, @"(\w+?)=\""(.+?)\""")
.OfType<Match>()
.Select(x => x.Value)
.ToArray();
这将为您提供值的字符串数组。
编辑对于 OP 询问的具体情况
string input = "FirstName=\"xy z\" LastName=\"Huber\"";
var matches = Regex.Matches(input, @"[^\s\""]+(?:\"".*?\"")?")
.OfType<Match>()
.Select(x => x.Value)
.ToArray();