Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSON格式内的字符串匹配_Java_Regex_Json - Fatal编程技术网

Java JSON格式内的字符串匹配

Java JSON格式内的字符串匹配,java,regex,json,Java,Regex,Json,我使用一个简单的regexp匹配器来匹配wikidump中的一段JSON文本。JSON在XML中。我已经在字符串str中检索了XML标记的内容。 代码是 str.matches(".*"m":["value",569,"time",\\{"time":"+00000001952-03-11.*") (我在这里给出标签中的确切格式) {

我使用一个简单的regexp匹配器来匹配wikidump中的一段JSON文本。JSON在XML中。我已经在字符串
str
中检索了XML标记
的内容。 代码是

str.matches(".*"m":["value",569,"time",\\{"time":"+00000001952-03-11.*")
(我在这里给出标签
中的确切格式)

{
有问题,所以我加入了
\{
,但仍然无法工作。我并不真的为那里的
{
感到烦恼,但我不知道如何摆脱它

错误是:

java.util.regex.PatternSyntaxException:附近的非法字符范围 索引94 “m”:[“值”,569,“时间”,“时间”:“+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)位于 sequence(Pattern.java:2030)位于 java.util.regex.Pattern.expr(Pattern.java:1964)位于 编译(Pattern.java:1665) Pattern.(Pattern.java:1337)位于 compile(Pattern.java:1022)位于 Pattern.matches(Pattern.java:1128)位于 java.lang.String.matches(String.java:2063)位于 testProjectone.birthDate.testbirthDate(birthDate.java:64)位于 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于 invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:606) org.junit.runners.model.FrameworkMethod$1.runReflectVeCall(FrameworkMethod.java:47) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org.junit.runners.model.FrameworkMethod.invokeeexplosive(FrameworkMethod.java:44) 在 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 位于org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 位于org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)位于 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)位于 org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)位于 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)位于 org.junit.runners.ParentRunner.run(ParentRunner.java:309)位于 org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)


你提到的方法调用

str.matches(“.m”):[“值”,569,“时间”,“时间”:“+00000001952-03-11。”


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

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

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

".*"m":\\["value",569,"time",\\{"time":"\\+00000001952-03-11.*"
当您想要找到一个固定的长字符串时,构造正则表达式的一种简单方法是使用:


*
之间的文本部分都将被视为文字字符。

您能给出一个您尝试匹配的示例字符串吗?我尝试匹配的唯一字符串是:“m”:[“value”,569,“time”\\{";time";:";+00000001952-03-11,它在和之间没有空格。字符串中实际上有一个“quot”字。但是它被显示为“当我沿着wid给它时”,字符串中实际上有一个“quot”字。但是它被显示为“当我沿着wid给它时”。它就像“m”一样:[“值”,569,“时间”,时间:“+00000001952-03-11
".*" + Pattern.quote(""m":["value",569,"time",{"time":"+00000001952-03-11") + ".*"