Groovy “为什么?”\1“;在三引号字符串中,计算为unicode 0x1代码点

Groovy “为什么?”\1“;在三引号字符串中,计算为unicode 0x1代码点,groovy,heredoc,unicode-escapes,Groovy,Heredoc,Unicode Escapes,我想要一个包含文本\1的字符串 我所做的是(真正的字符串更长,但并不重要): 这导致一个字符串包含unicode0x1codepoint 我想我应该做的就是像这样避开反斜杠: ''' \\1 ''' 我不明白的是为什么Groovy没有在这里报告错误。我以为unicode越狱是什么 当我试图将此字符串放入XML元素时,出现了一个运行时异常,而不是语法错误: An invalid XML character (Unicode: 0x1) was found in the element cont

我想要一个包含文本
\1
的字符串

我所做的是(真正的字符串更长,但并不重要):

这导致一个字符串包含unicode
0x1
codepoint

我想我应该做的就是像这样避开反斜杠:

'''
 \\1
'''
我不明白的是为什么Groovy没有在这里报告错误。我以为unicode越狱是什么

当我试图将此字符串放入XML元素时,出现了一个运行时异常,而不是语法错误:

An invalid XML character (Unicode: 0x1) was found in the element content of the document.
\
(反斜杠)符号是一个符号。如果你想按字面意思使用它,你必须逃避它本身:
\\

转义任何字符时,该字符将被解释为具有特殊含义。对于
\1
序列,恰好可以将其解释为
0x01
码点

这在Java字符串中是相同的

如果希望不必在Groovy中转义字符,请使用:

也可以作为多行:

def x = /
\1
/

现在你指出了,我意识到这是--我可以发誓他们必须从
\0
开始,但显然他们没有。很好的建议,但实际上我不想在那里工作
def x = /\1/
assert x == "\\1"
def x = /
\1
/