C# JToken.SelectToken与正则表达式一起查找与模式匹配的值?

C# JToken.SelectToken与正则表达式一起查找与模式匹配的值?,c#,json.net,jsonpath,C#,Json.net,Jsonpath,如何在路径中查找与模式匹配的值(例如,查找所有有效电子邮件地址的值)?是否存在类似于正则表达式的兼容性?我不确定是否在任何地方记录了这一点(至少我没有找到),但实际上在最新版本中(似乎从11.0.1开始)确实如此。语法是=~/regex here/。例如: JObject o = JObject.Parse("{\"Objects\": [{\"Email\": \"test@gmail.com\"}, {\"Email\":\"not an email\"}]}"); // returns o

如何在路径中查找与模式匹配的值(例如,查找所有有效电子邮件地址的值)?是否存在类似于正则表达式的兼容性?

我不确定是否在任何地方记录了这一点(至少我没有找到),但实际上在最新版本中(似乎从11.0.1开始)确实如此。语法是
=~/regex here/
。例如:

JObject o = JObject.Parse("{\"Objects\": [{\"Email\": \"test@gmail.com\"}, {\"Email\":\"not an email\"}]}");
// returns only "test@gmail.com" token
var result = o.SelectToken(@"$.Objects[?(@.Email =~ /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/)]");

实际上,我之前尝试过这个方法,但收到了一个
异常:Newtonsoft.Json.JsonException:“无法读取查询运算符”。
。您使用的是哪个json.net版本?@AmirPopovich我使用的是上一个nuget版本,它是11.0.1,从10.3升级到11,这确实有效。可能是一个新功能。感谢您的回答。关于文档,在:新增功能中提到了对正则表达式的支持,添加了对JSON路径中正则表达式运算符的支持。James Newton King在一篇文章中描述了它:*Json.NET 11在Json路径查询中添加了对正则表达式操作符的支持…*。这篇博文展示了正则表达式匹配的
=~
操作符的用法。