java - 元字符\B匹配(OCP考试)

标签 java regex ocpjp

我正在学习 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 或 test it on an outside source 运行代码时, 我得到

0 2 4 5 7 10

我是不是遗漏了什么,还是学习指南的作者弄错了?

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

书中的问题

OCP Java 7 Self Test Question 8.3

回答

enter image description here

最佳答案

这本书是正确的(当在带有普通 shell 的 Unix 机器上执行时)。它是 shell 行为和 java 的结合(在我看来,Java 类(class)离题)。记住 shell 中的“$”表示替换。因此,如果您将该程序称为:

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

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

^23 *6 bc

用书“0 2 4 8”给出的结果。

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

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

禁用 shell 替换。

关于java - 元字符\B匹配(OCP考试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31629761/

相关文章:

Java:如果使用Pattern.quote(),是否保证在编译期间不会抛出PatternSyntaxException?

regex - 通过精确单词匹配过滤 pandas 数据框

java - a = (a++) * (a++) 在 Java 中给出奇怪的结果

java - 获取 PKIX 路径构建失败

java - 是否可以在 xslt 中格式化一个大的小数日期

html - 逗号分隔的单词正则表达式(html 输入模式)

java - OCPJP 8 什么是使用 NIO2 的符号链接(symbolic link)

Java 的 readInt() 在 C 中是否等效?

java - 使用 Fabric8 关闭 Kubernetes 客户端

java - string.split ("\\S") 是如何工作的