8

我正在学习 Java OCP 证书。我正在参加模拟考试准备。

示例程序:

public class Quetico {
    public static void main(String[] args) {
        Pattern p = Pattern.compile(args[0]);
        Matcher m = p.matcher(args[1]);
        while (m.find()) {
            System.out.println(m.start() + " ");
        }
        System.out.println("");
    }
}

OCA/OCP Jave SE 7 学习指南的作者认为执行:

java Quetico "\B" "^23 *$76 bc"

将产生输出

0 2 4 8

但是,当我从 Eclipse 运行代码或在外部源上对其进行测试时,我得到

0 2 4 5 7 10

我在这里遗漏了什么,还是学习指南作者的错误?

我正在添加下面书中的实际问题以供参考。

书中的问题

OCP Java 7 自测题 8.3

回答

在此处输入图像描述

4

1 回答 1

6

这本书是正确的(在具有通常 shell 的 Unix 机器上执行时)。它是 shell 行为和 java 的结合(在我看来,与 Java 课程无关)。记住 shell 中的“$”表示替换。因此,如果您将程序称为:

java Quetico "\B" "^23 *$76 bc"

通过正则表达式匹配的字符串是(您可以为 args[1] 添加一个 println 来验证它):

^23 *6 bc

结果由“0 2 4 8”一书给出。

您可以将结果与以下结果之一进行比较:

java Quetico "\B" '^23 *$76 bc'

禁用外壳替换。

于 2015-07-25T19:48:06.187 回答