当前位置: 首页 > 知识库问答 >
问题:

在正则表达式中以“/”开头的Jayway jsonpath

蓬弘
2023-03-14

在使用带有xpath的正则表达式时,我对jayway jsonpath有意见。以下是我的json:

{
  "status": "success",
  "resources": [
    {
      "id": "Attachment-20796b26-7a16-4a3d-b53c-b30d9f3cb798.TXT",
      "name": "1996032897__test1.CREDITPRINTFILE",
      "mimeType": "text/plain",
      "url": "https://test.com"
    }
  ]
}

下面是我的表达式:resources[?(/_test1.CREDITPRINTFILE/.test(@.name))]

我得到以下错误:

Exception in thread "main" com.jayway.jsonpath.InvalidPathException: Expected path node
    at com.jayway.jsonpath.internal.filter.ValueNode.asPathNode(ValueNode.java:53)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readExpression(FilterCompiler.java:204)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalANDOperand(FilterCompiler.java:189)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalAND(FilterCompiler.java:151)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalOR(FilterCompiler.java:131)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalANDOperand(FilterCompiler.java:184)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalAND(FilterCompiler.java:151)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalOR(FilterCompiler.java:131)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.compile(FilterCompiler.java:77)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.compile(FilterCompiler.java:53)
    at com.jayway.jsonpath.internal.path.PathCompiler.readFilterToken(PathCompiler.java:461)
    at com.jayway.jsonpath.internal.path.PathCompiler.readNextToken(PathCompiler.java:141)
    at com.jayway.jsonpath.internal.path.PathCompiler.readPropertyOrFunctionToken(PathCompiler.java:237)
    at com.jayway.jsonpath.internal.path.PathCompiler.readNextToken(PathCompiler.java:151)
    at com.jayway.jsonpath.internal.path.PathCompiler.readDotToken(PathCompiler.java:171)
    at com.jayway.jsonpath.internal.path.PathCompiler.readNextToken(PathCompiler.java:145)
    at com.jayway.jsonpath.internal.path.PathCompiler.readContextToken(PathCompiler.java:124)
    at com.jayway.jsonpath.internal.path.PathCompiler.compile(PathCompiler.java:58)
    at com.jayway.jsonpath.internal.path.PathCompiler.compile(PathCompiler.java:75)
    at com.jayway.jsonpath.JsonPath.<init>(JsonPath.java:101)
    at com.jayway.jsonpath.JsonPath.compile(JsonPath.java:467)
    at com.jayway.jsonpath.internal.JsonContext.read(JsonContext.java:87)
    at daniel.TestJsonPath.main(TestJsonPath.java:72)

我也尝试在在线评估工具中使用同样的表达:https://jsonpath.herokuapp.com/

Jayway-给出了相同的错误-预期路径节点Gatling,Nebhale-错误出Goessner-给我有效的结果

我想我使用的是最新版本的jayway-

<dependency>
  <groupId>com.jayway.jsonpath</groupId>
  <artifactId>json-path</artifactId>
  <version>2.4.0</version>
</dependency>

问:如果jayway不能解决这些表达式,有没有其他的java库可以用来解决这些问题?

共有1个答案

龙毅
2023-03-14

假设您正在寻找名称包含__test1. CREDITPRINTFILE的资源,jsonpath表达式资源[?(@. name =~ /.*__test1\. CREDITPRINTFILE/)]将适用于Jayway。在https://jsonpath.herokuapp.com/测试

 类似资料:
  • 问题内容: 如何在Java正则表达式中表示“无前缀”?例如,我只想搜索“:”,但仅在它不直接以“ \”开头时。我怎样才能做到这一点? 问题答案: 在后面使用负数: 四个反斜杠的原因是: 反斜杠是正则表达式中的特殊字符,因此您需要正则表达式来匹配单个反斜杠。 必须在Java字符串中对反斜杠进行转义,因此上述每个反斜杠必须都写为,总共为四个。 示例代码: 输出:

  • 问题内容: 我正在建立正则表达式以检查单词是否以或或开头,我的代码如下, 它打印。我还检查了Regex之后的 stackoverflow,以测试字符串是否以http://或https://开头 正则表达式似乎是正确的,但为什么不匹配?我甚至尝试和 问题答案: 您需要在此处进行 完整的输入 匹配。 编辑 :(基于@davidchambers的评论)

  • 我需要一个正则表达式来匹配以$开头的整个单词。表达式是什么,如何进行测试? 例子: 应提取此$word和$This。 在上面的句子中,可以找到和。

  • 问题内容: 我需要一个不以点开头或不以开头的正则表达式。 此正则表达式有效,但在第一个条件下失败;它不以点开头: 例如:应为有效字符串,但失败。 问题答案: 从上一个问题开始,您应该可以使用: 但是,如果您希望能够匹配1个字符串,则需要否定先行: 而且,如果您也想匹配空字符串,只需使用代替即可。

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • 问题内容: 我有一个带有某些配置值的文本文件。以#开头的注释我试图找到一个正则表达式模式,该模式将找出以#开头的所有行。 因此,示例文件: 我想找到 因为只有这两行以#开头,所以我尝试了以下代码: 但是它总是输出空数组。有人可以帮忙吗? 问题答案: 你忘了多修饰符(你应该 不 使用单线改性剂;也是不区分大小写的修饰符是不必要的,因为还有ungreedy修改): 说明: 允许and 在行的开头/结尾