regex 文本块内的Java正则表达式

wxclj1h5  于 2022-12-14  发布在  Java
关注(0)|答案(1)|浏览(181)

我当然希望这将得到支持:

private static void regex() {
    String plain = "\\w+";
    String withTextBlocks = """
        \w+
    """;
}

但是withTextBlocks不能在Java-17下编译。难道我们不应该转义文本块吗?我已经看过JEP,也许那里有解释,但是我不能通过它。如果有人知道的话,第二个问题是,是否有未来的JEP?谢谢。

qij5mzcb

qij5mzcb1#

您正在将 *text block * 与 *raw string * 合并。这是不同的特性,尽管它们是一起探索的,这可能解释了为什么您在心理上将它们合并在一起。目前还没有对raw string的支持(结果证明它们比最初看起来更滑。)
我们不应该逃避文本块的意义吗?
不,这不是文本块的意义。文本块的意义在于允许我们在代码中表示 * 二维 * 文本块,保留块的相对缩进而不是绝对缩进。这允许我们自由地缩进文本块本身的源代码表示,以匹配周围的代码,而不影响文本块描述的字符串的缩进。
另一个设计目标是,文本块与普通字符串文字的不同之处仅在于它们的二维性质。不应有不同的转义字符集或不同的转义规则。(如果我们使用原始字符串,它应该同样适用于文本块和传统的字符串文字。)如果文本块按照您希望的方式工作,您可能会抱怨不能对单行字符串做同样的处理。这些方面是正交的,语言应该正交地对待它们。

相关问题