在JsonPath中按正则表达式过滤值

时间:2018-05-08 14:11:27

标签: java regex jsonpath

我试图找到一种使用Jayway的JsonPath通过正则表达式过滤值的方法,到目前为止,我可以或多或少地做我想做的事。

我尝试按照不以&foo foo&#39;开头的值过滤结果。对于我的正则表达式知识,应该由public partial class DepartmentContext : DbContext { // Required for DI container public DepartmentContext() { } // Required for unit testing public DepartmentContext(DbContextOptions options) : base(options) {} public virtual DbSet<Faculty> Faculties { get; set; } public virtual DbSet<Student> Students { get; set; } ...... //More DbSets //connectionString to change based on the DepartmentId public static string ConnectionString { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlServer(ConnectionString); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { //modelBuilder.Entity<Faculty>(entity => { }); } } 使用给定的JSON

来完成
'$..book[?(@.author =~ /^[^foo]/)].author'

但它并没有返回任何值,尽管没有任何值以&#39; foo&#39;开头。我已经通过在线工具尝试了它:https://jsonpath.herokuapp.com/

此外,我无法用任何用Java或类似方法编写的Java代码或过滤器来解决这个问题。正则表达式将是我或多或少的唯一选择。

有谁知道如何解决这个问题?

干杯,

1 个答案:

答案 0 :(得分:1)

按不以'foo'开头的值过滤结果,请尝试:$..book[?(@.author =~ /^(?!foo).*/i)]

正则表达式:/^(?!foo).*/i)只有在不以foo开头时才会返回匹配(使用否定前瞻)