类似Google的搜索查询拆分正则表达式

时间:2013-09-05 09:33:00

标签: c# regex

我有搜索查询

string input = "FirstName=\"xy z\" LastName=\"Huber\"";

想用Regex分割它

我想要一个包含以下标记的字符串数组:

FirstName=\"xy z\"
LastName=\"Huber\"

如您所见,令牌用双引号

保留空格

我的正则表达式

  

( “[^”] +“| \ W +)\ S *

几乎不想要我......需要修复更多它

  

FirstName = \“xy z \”LastName = \“Huber \”

1 个答案:

答案 0 :(得分:0)

改变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();