0
String s = "=?ISO-2022-JP?B?GyRCRZi?= =?ISO-2022-JP?B?QDg7OlWiE8?= =?ISO-2022-JP?B?JTkkT=?= =?ISO-2022-JP?B?kjaHaA?=";
String replRegex = "[^=]\\?= =\\?ISO-2022\\-JP\\?B\\?";

stringtoDecode= s.replaceAll(replRegex, "" );

结果我得到的是

=?ISO-2022-JP?B?GyRCRZQDg7OlWiEJTkkT=?= =?ISO-2022-JP?B?kjaHaA?=

但我期待的是

=?ISO-2022-JP?B?GyRCRZiQDg7OlWiE8JTkkT=?= =?ISO-2022-JP?B?kjaHaA?=

?= =?ISO-2022-JP?B?结果中缺少该字符。如果"?= =?ISO-2022-JP?B?"不是由"=".

我在这里做错什么了吗?请建议

4

1 回答 1

0

[^=]部分正在消耗角色i。您可以捕获此“消耗”字符并替换它:

String replRegex = "([^=])\\?= =\\?ISO-2022-JP\\?B\\?";
stringtoDecode= s.replaceAll(replRegex, "$1" );

ideone 演示

请注意,您不需要转义连字符。(只有当您的意思是字符类中的文字连字符并且连字符位于该字符类中间的某个位置时,您才需要转义连字符。

输出:

=?ISO-2022-JP?B?GyRCRZiQDg7OlWiE8JTkkT=?= =?ISO-2022-JP?B?kjaHaA?=
于 2013-09-18T11:43:40.210 回答