我对正则表达式了解不多,但是我需要匹配一个简单的模式。以下内容应返回true,
Pattern.matches("{\"user_id\" : [0-9]*}", inputLine)
当inputLine为
{"user_id" : 34}
但是,我收到此异常:
java.util.regex.PatternSyntaxException: Illegal repetition
{"user_id" : 24}
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.closure(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.matches(Unknown Source)
at org.whispercomm.manes.server.http.IntegrationTest.createUser(IntegrationTest.java:173)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
我究竟做错了什么?
该{
和}
是在Java中的正则表达式方言(和大多数其他方言为此事)特殊:他们是对的重复数量的开闭令牌{n,m}
哪里n
以及m
是整数。因此,错误消息:“非法重复”。
您应该摆脱它们:"\\{\"user_id\" : [0-9]*\\}"
。
而且由于您似乎正在尝试解析JSON,所以建议您看看Jackson。
我的正则表达式是 当我在java中使用Pattern.complie()编译时,我得到了*非法重复字符* 我测试了这个正则表达式 当我编译这个时,它没有显示错误。 为什么会发生这种情况?
然而,我得到了一个例外: 我做错了什么?
本文向大家介绍Java正则表达式使用,包括了Java正则表达式使用的使用技巧和注意事项,需要的朋友参考一下 一:抓取网页中的Email地址 利用正则表达式匹配网页中的文本 将网页内容分割提取 打印结果: 867124664@qq.com 260678675@QQ.com 806208721@qq.com hr_1985@163.com 32575987@qq.com qingchen0501@12
问题内容: 我有下一个代码: 并具有下一个输出: 但我认为它必须是: 有人请解释为什么。 问题答案: 由于您的模式是非贪婪的,因此它们在仍由匹配项组成的情况下,匹配的文本越少越好。 去除 ?在第二组中,您会得到 单词 word word big small
问题内容: 如何在Java Regex中定义重复组? 假设一个2位数[0-9] {2}多次用分隔, 这是可能的还是唯一的机会? 编辑:我想验证并提取。 问题答案: 最简单的方法是使用两步解决方案:1)首先,验证字符串,然后2)用您选择的定界符分割字符串: 在此,匹配以两位数字开头的整个字符串,然后匹配出现的0个或多个和结尾的两位数字,然后用逗号分割该字符串。注意你不需要和美女主播与图案内,因为该方
我的Java程序中有这个正则表达式 我也想在正则表达式中包含[和]。我也尝试使用转义字符,但没有成功。如何将这些字符添加到我的正则表达式中? 使用此示例 我试过\[和[,它不工作 上一次运行上述代码时,输出<code>Test:false