问题描述
我正在攻读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
我在这里遗漏了什么,还是学习指南的作者错了?
我正在添加下面这本书中的实际问题以供参考。
书中的问题
回答
1楼
这本书是正确的(当使用通常的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'
禁用shell替换。