文本块内的 Java 正则表达式

Eug*_*ene 7 java regex escaping java-17

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

\n
private static void regex() {\n    String plain = "\\\\w+";\n    String withTextBlocks = """\n        \\w+\n    """;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

withTextBlocks不能在 Java-17 下编译。\xe2\x80\x99 是不是我们不应该转义的文本块点?我已经通过了JEP,也许解释就在那里,但我无法理解它。第二个问题,如果有人知道的话,未来是否有一个 JEP?谢谢。

\n

Bri*_*etz 14

您正在将文本块原始字符串混为一谈混为一谈。这些是不同的功能,尽管它们是一起探索的,这可以解释为什么你在心理上将它们折叠在一起。目前尚不支持原始字符串(事实证明,原始字符串比最初出现的情况要复杂一些。)

\n
\n

\xe2\x80\x99 是不是我们不应该转义的文本块点?

\n
\n

不,这不是文本块的重点。文本块的目的是让我们能够表示二维块,保留块的相对缩进,但不保留绝对缩进。这允许我们自由缩进文本块本身的源表示以匹配周围的代码,而不影响文本块描述的字符串的缩进。

\n

另一个设计目标是文本块与普通字符串文字的不同之处仅在于与其二维性质相关的方式。不应有不同的转义字符集或不同的转义规则。(如果我们曾经做过原始字符串,它应该同样适用于文本块和传统字符串文字。)如果文本块按照您想要的方式工作,您可能会抱怨不能对单行字符串执行相同的操作。这些方面是正交的,语言应该正交地对待它们。

\n