java - 通过 JsonPath 中的正则表达式过滤值

标签 java regex jsonpath

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

我正在尝试按不以“foo”开头的值过滤结果。据我的正则表达式知识,它应该由 '$..book[?(@.author =~/^[^foo]/)].author' 以及给定的 JSON 来完成

{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

但它不返回任何值,尽管没有一个值以“foo”开头。我已经通过使用在线工具尝试过:https://jsonpath.herokuapp.com/

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

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

干杯,

最佳答案

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

正则表达式:/^(?!foo).*/i) 仅当不以 foo 开头时才返回匹配项(使用负向前瞻)

关于java - 通过 JsonPath 中的正则表达式过滤值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50235723/

相关文章:

Javascript正则表达式将字符串拆分为分组/连续字符数组

用于检查 Apache Camel XML 中字符串的 JSONPath 表达式

java - 传递值

java - 使用 NGINX 进行开发

Java 数字格式困境

c# - 轻型 HTML 部分匹配优化

java - 设置 LogBack Appender 的相对路径

php - preg_match 表现得很奇怪

groovy - SOAPUI 中是否有用于基本 JSON 路径表达式的子字符串方法?

java - 获取无法编译内联过滤器: <Jsonpath with Query>