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

JSON格式内的字符串匹配

陈瀚玥
2023-03-14

我正在使用一个简单的正则表达式匹配器来匹配wiketump中的一段JSON文本。JSON在XML内部。我已经检索到XML tag的内容

str.matches(".*"m":["value",569,"time",\\{"time":"+00000001952-03-11.*")

(我给出了标签中的确切格式<代码>

{有问题,所以我包含了\\{,仍然不起作用。我并不真的为那里的{而烦恼,但我不知道还能怎么逃脱它。

错误是:

Java语言util。正则表达式。PatternSyntaxException:索引94附近的字符范围非法。“m”:[“value”,569,“time”,{“time”:“0000000 1952-03-11。^在java.util.regex.Pattern.error(Pattern.java:1924)在java.util.regex.Pattern.range(Pattern.java:2594)在java.util.regex.Pattern.clazz(Pattern.java:2507)在java.util.regex.Pattern.sequence(Pattern.java:2030)在java.util.regex.Pattern.expr(Pattern.java:1964)在java.util.regex.Pattern.compile(Pattern.java:1665)在java.util.regex.Pattern。(Pattern.java:1337)在java。util。正则表达式。图案在java上编译(Pattern.java:1022)。util。正则表达式。图案在java上匹配(Pattern.java:1128)。lang.String。在testProjectone中匹配(String.java:2063)。生日。在sun测试birthDate(birthDate.java:64)。反映NativeMethodAccessorImpl。在sun调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:57)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。lang.reflect。方法在org调用(方法java:606)。朱尼特。跑步者。模型FrameworkMethod$1。在org上运行reflectivecall(FrameworkMethod.java:47)。朱尼特。内部的跑步者。模型反射率可调。在org上运行(ReflectiveCallable.java:12)。朱尼特。跑步者。模型FrameworkMethod。org上的invokeeexplosive(FrameworkMethod.java:44)。朱尼特。内部的跑步者。声明。调用方法。在org上评估(InvokeMethod.java:17)。朱尼特。跑步者。ParentRunner。org上的runLeaf(ParentRunner.java:271)。朱尼特。跑步者。BlockJUnit4ClassRunner。org上的runChild(BlockJUnit4ClassRunner.java:70)。朱尼特。跑步者。BlockJUnit4ClassRunner。org上的runChild(BlockJUnit4ClassRunner.java:50)。朱尼特。跑步者。ParentRunner 3美元。在org上运行(ParentRunner.java:238)。朱尼特。跑步者。ParentRunner 1美元。计划(ParentRunner.java:63)位于org。朱尼特。跑步者。ParentRunner。org上的runChildren(ParentRunner.java:236)。朱尼特。跑步者。ParentRunner。访问org上的$000(ParentRunner.java:53)。朱尼特。跑步者。ParentRunner 2美元。在org上评估(ParentRunner.java:229)。朱尼特。跑步者。ParentRunner。在org上运行(ParentRunner.java:309)。日食jdt。内部的junit4.runner。JUnit4TestReference。在org上运行(JUnit4TestReference.java:50)。日食jdt。内部的朱尼特。跑步者测试执行。在org上运行(TestExecution.java:38)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。在org上运行测试(RemoteTestRunner.java:467)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。在org上运行测试(RemoteTestRunner.java:683)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。在org上运行(RemoteTestRunner.java:390)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。main(RemoteTestRunner.java:197)


共有2个答案

宋臻
2023-03-14

您提到的方法调用

str.matches("."m":["value",569,"time",\{"time":"00000001952-03-11."

是个问题。方法参数中双引号中的双引号是个问题。

燕翼
2023-03-14

您需要转义,因为它将被引擎解释为字符类的开始。

您需要转义的另一件事是在0000000中转义,因为被解释为重复上一个字符(即)一次或多次。

".*&quot;m&quot;:\\[&quot;value&quot;,569,&quot;time&quot;,\\{&quot;time&quot;:&quot;\\+00000001952-03-11.*"

当您想要找到一个固定的长字符串时,构造正则表达式的一种简单方法是使用模式。引号(字符串s)

".*" + Pattern.quote("&quot;m&quot;:[&quot;value&quot;,569,&quot;time&quot;,{&quot;time&quot;:&quot;+00000001952-03-11") + ".*"

介于<代码>之间的文本部分* 将全部视为文字字符。

 类似资料:
  • key 描述 host 服务器主机名 一般使用apigwws.open.rokid.com port 服务器端口 目前为443 branch 服务器功能选择分支 固定为/api key 用于服务登录认证  device_type_id 用于服务登录认证 secret 用于服务登录认证 device_id 设备名,用于服务登录 codec 语音编码格式: speech服务可选项"pcm" "opu"

  • 问题内容: 我收到以下错误: 第一个字段是格式。 有任何想法吗? 谢谢。 问题答案: 当您将字符串值插入日期列时,则需要在使用函数期间将其转换为日期。使用此功能时,您将提供字符串的格式。 功能格式: 因此,您的查询将如下所示: 参见带有演示的SQL Fiddle

  • 问题内容: 如何检查给定的字符串是否采用以空格/换行符分隔的多个json字符串形式? 例如, 给定的:(3个json与空格连接) return :,因为item( 和)中的每个都是有效的json。 在Go中,我可以编写一个O(N ^ 2)函数,例如: 但这不适用于大量输入。 问题答案: 有两种选择。从编码的角度来看,最简单的方法就是正常解码JSON字符串。您可以通过解码为空结构来提高效率: (游乐

  • 问题内容: 我想在输入字符串中搜索给定的字符串模式。 例如 现在,我需要搜索字符串URL是否包含“ ”。请帮我。 这是一个例子。实际上,我需要检查URL是否包含匹配“ / {a-zA-Z0-9} /”的字符串。 问题答案: 您可以为此使用类。如果您只想在中匹配单词字符,则可以使用以下正则表达式。是的简写。如果您可以,请使用或。

  • 问题内容: 我有一个有效的JSON字符串,我想对其进行整理/格式化,以使每个属性/值对在其自己的行上,依此类推(当前它在一行上,没有空格/换行符)。 我正在使用Apache Sling 对我的JSON对象建模并将其转换为String,因此,如果可以将Sling 设置为输出一个整洁的字符串(我认为它不可能),那也可以工作。 如果我需要一个第三方库,我希望尽可能少地依赖一个库(例如Jackson仅需要

  • 如何转换字符串列表 我正在使用NewtonSoft.json。 任何帮助都将不胜感激。