元字符 \B 匹配(OCP 考试)
Metacharacter \B matches (OCP exam)
我正在学习 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 * bc"
将产生输出
0 2 4 8
但是,当我 运行 来自 Eclipse 或 test it on an outside source 的代码时,我得到
0 2 4 5 7 10
我是不是遗漏了什么,还是学习指南的作者弄错了?
我正在添加下面书中的实际问题以供参考。
书中的问题
回答
这本书是正确的(当在 Unix 机器上执行通常的 shells 时)。它是 shell 行为和 java 的组合(在我看来,Java 的课程离题)。请记住 shell 中的“$”表示替换。因此,如果您将程序命名为:
java Quetico "\B" "^23 * bc"
通过正则表达式匹配的字符串是(您可以为 args[1] 添加一个 println 来验证它):
^23 *6 bc
与书上给出的结果“0 2 4 8”。
您可以将结果与以下之一进行比较:
java Quetico "\B" '^23 * bc'
禁用 shell 替换。
我正在学习 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 * bc"
将产生输出
0 2 4 8
但是,当我 运行 来自 Eclipse 或 test it on an outside source 的代码时,我得到
0 2 4 5 7 10
我是不是遗漏了什么,还是学习指南的作者弄错了?
我正在添加下面书中的实际问题以供参考。
书中的问题
回答
这本书是正确的(当在 Unix 机器上执行通常的 shells 时)。它是 shell 行为和 java 的组合(在我看来,Java 的课程离题)。请记住 shell 中的“$”表示替换。因此,如果您将程序命名为:
java Quetico "\B" "^23 * bc"
通过正则表达式匹配的字符串是(您可以为 args[1] 添加一个 println 来验证它):
^23 *6 bc
与书上给出的结果“0 2 4 8”。
您可以将结果与以下之一进行比较:
java Quetico "\B" '^23 * bc'
禁用 shell 替换。