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

本文关键字:查询 拆分 正则表达式 搜索 谷歌 | 更新日期: 2023-09-27 18:30:18

我有搜索查询

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

想使用正则表达式来拆分它

我想要一个带有以下令牌的字符串数组:

FirstName='"xy z'"
LastName='"Huber'"

如您所见,标记保留了双引号中的空格

我的正则表达式

("[^"]+"|''w+)''s*

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

名字= ''"

xy z''" 姓氏 = ''"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();