Java正则表达式。为什么这是假的(eclipse表达式调试器)

时间:2016-07-22 12:08:20

标签: java regex eclipse

为什么会返回false?

"$10+".matches("^\\\\${0,1}[1-9,\\\\.]{0,}[\\\\+kK]{0,}")

我使用eclipse调试器,因此这是使用\\\\代替\\

的原因

第一次签到与^\\\\${0,1}的匹配 数字或逗号或点匹配到[1-9,\\\\.]{0,} 最后一个符号+或k或K应与[\\\\+kK]{0,}

匹配

但是返回false。为什么呢?

2 个答案:

答案 0 :(得分:2)

集合中没有零,应该是:

"$10+".matches("^\\${0,1}[0-9,\\.]{0,}[\\+kK]{0,}"

或者(如果你想在开头有非零):

"$10+".matches("^\\${0,1}[1-9\\.][0-9,\\.]{0,}[\\+kK]{0,}"

此外,它不需要在角色组中逃脱+,对于#34;不确定是否相同。"

答案 1 :(得分:0)

我用JUnit测试了你的表达。

@Test
public void testRegex() throws Exception {
    assertTrue("$10+".matches("^\\${0,1}[0-9,\\\\.]*[\\\\+kK]*"));
}

现在回归真实。我通过*。

更改您的选项{0,}