0

你知道为什么在一个简单的正则表达式模式中 if put a*( quantifier) 它不匹配匹配器中的任何结果,即使它实际上包含字符 a; (在任何情况下,它都应该返回一个发现空字符串的结果,因为我正在使用“ ”)。它适用于其他字符,例如 r* 和 b* 没有问题。我知道如果内容放在引号或括号之间,它会起作用。(“a *”)。虽然只是想知道为什么它可以使用不带引号的 b* 而不是不带引号的 a* 。

代码:

Pattern pat = Pattern.compile(args[0]);
        Matcher match = pat.matcher(args[1]);
while (match.find())
        {
            System.out.println("Indeed this the information I need:"+ match.group());

            System.out.println("Here it starts:"+match.start());
}       

我知道 'a' 是一个元字符,但 'e' 和 'f' 也是,并且与它们一起正常工作。

我在命令行中插入:args[0] = a* args[1] = abba 作为输入。

任何的想法?提前致谢。

4

2 回答 2

6

可能是因为*运行 Java 的 shell 正在扩展它。尝试打印出 的内容args[0],我想你会发现你匹配的模式不是你认为匹配的模式。

您可以通过引用您的论点来解决此问题 -'a*'而不仅仅是a*.

于 2013-02-16T20:59:43.670 回答
0

为了选择你的正则表达式必须是这样的:"(a*)"并且你感兴趣group(1)

于 2013-02-16T21:03:52.677 回答