用2个范围(或)之间的ASCII值替换String

时间:2013-10-16 08:46:29

标签: java regex

我想替换包含不需要的ASCII字符的字符串,除了这两个范围(hex中):

x20-x7ex80-x9a

如何编写正确的正则表达式,以便它替换所有不在20-7e80-9a之间的字符?

我试过了:

String fixed = value_.replaceAll("[^(\\x20-\\x7e|\\x80-\\x9a)]", "");

但它并没有奏效。 的更新: 我得到的字符串只有x20-x7e之间的字符,包括所有其他字符 x80-x9a被替换。

我如何使用或在这两个范围之间?

2 个答案:

答案 0 :(得分:1)

为什么不呢:

String fixed = value_.replaceAll("[^\\x20-\\x7e\\x80-\\x9a]", "");

答案 1 :(得分:0)

修复正则表达式语法,并使用Unicode \unnnn

String fixed = value_.replaceAll("[^\u0020-\u007e\u0080-\u009a]", "");

或八进制\nnn

String fixed = value_.replaceAll("[^\40-\176\200-\232]", "");

仅供参考虽然Unicode需要全部四位数,但八进制只需要所需数量。