我试图在groovy中执行此命令
但出现此错误"未找到四位十六进制字符"
varinif="0066";
varfinf="0075";
string.replaceAll(/\n((?!(;29#:[\u${varinif}-\u${varfinf}]&)).)*(?=\n)/, '')
但是当我没有变量作品时
string.replaceAll(/\n((?!(;29#:[\u0066-\u0075]&)).)*(?=\n)/, '')
请帮帮我
答案 0 :(得分:1)
您需要使用类似decodeHex()
的内容将十六进制字符串转换为原始字节,然后可能需要转换为字符类型。然后,您将直接将字符插入到没有\u
的字符类中。
string.replaceAll(/\n((?!(;29#:[${varinif}-${varfinf}]&)).)*(?=\n)/, '')
基本上,您将\u
视为在运行时运行的函数,但实际上编译器会在编译时转换\uXXXX
的任何实例。 \u${va
显然不是一个有效的unicode字符,因此它永远不会被转换;你的\u
毫无意义。这就是您需要使用运行时方法进行转换的原因。