定义String时java中无效的转义序列(有效转义序列为\ b \ t \ n \ f \ r \“\'\\)

时间:2015-01-30 10:53:09

标签: java android regex string

我尝试在字符串中定义\b \t \n \f \r \" \' \\但是得到了 的 Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )

我正在从网上获取加密数据,就像这样。

String testString="4sXuWJ4juj\/RS46l7xFLK|awhVBqNga\/BbyNt7t3Q\/DJ7OhHNix8G2PDyAFSGw+1E=“;

我想根据 | 拆分字符串。所以我想尝试放入字符串。任何想法如何基于|拆分在java。

任何想法,如何分割,如果我从web获取这种类型的字符串数据 testString 。使用某些spitting参数。喜欢|,\和其他人。

1 个答案:

答案 0 :(得分:5)

在Java中将正则表达式定义为字符串文字时,会发生两种不同的转义:

  • 首先,Java编译器解释字符串中的转义序列。它支持字符串文字中的八个转义序列
  • 其次,Regex引擎在编译器解释Java转义序列后解释字符串。正则表达式支持自己的转义序列,让你逃脱它的元字符。特别是,它支持\|

然而,为了让Regex引擎能够"看到" \|,你需要转义Java编译器的斜杠,即写\\|

为了避免在这种情况下出现混淆,我更喜欢用元字符创建一个字符类,例如: [|][*][+]等。通过这种方式,您不必双重转义许多常见的元字符。当然,这个技巧并不普遍 - 例如,它不适用于]