我试图找到一种使用Jayway的JsonPath通过正则表达式过滤值的方法,到目前为止,我可以或多或少地做我想做的事。
我尝试按照不以&foo foo'开头的值过滤结果。对于我的正则表达式知识,应该由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代码或过滤器来解决这个问题。正则表达式将是我或多或少的唯一选择。
有谁知道如何解决这个问题?
干杯,
答案 0 :(得分:1)
按不以'foo'开头的值过滤结果,请尝试:$..book[?(@.author =~ /^(?!foo).*/i)]
正则表达式:/^(?!foo).*/i)
只有在不以foo开头时才会返回匹配(使用否定前瞻)