我怎么解决"没找到四位十六进制字符"在Groovy?

时间:2018-01-02 04:49:37

标签: regex groovy

我试图在groovy中执行此命令

但出现此错误"未找到四位十六进制字符"

  varinif="0066";
 varfinf="0075";
   string.replaceAll(/\n((?!(;29#:[\u${varinif}-\u${varfinf}]&)).)*(?=\n)/, '')

但是当我没有变量作品时

 string.replaceAll(/\n((?!(;29#:[\u0066-\u0075]&)).)*(?=\n)/, '')

请帮帮我

1 个答案:

答案 0 :(得分:1)

您需要使用类似decodeHex()的内容将十六进制字符串转换为原始字节,然后可能需要转换为字符类型。然后,您将直接将字符插入到没有\u的字符类中。

string.replaceAll(/\n((?!(;29#:[${varinif}-${varfinf}]&)).)*(?=\n)/, '')

基本上,您将\u视为在运行时运行的函数,但实际上编译器会在编译时转换\uXXXX的任何实例。 \u${va显然不是一个有效的unicode字符,因此它永远不会被转换;你的\u毫无意义。这就是您需要使用运行时方法进行转换的原因。