Java 用2个范围(或)之间的ASCII值替换字符串

Java 用2个范围(或)之间的ASCII值替换字符串,java,regex,Java,Regex,我想替换一个包含不需要的ASCII字符的字符串,但这两个范围除外(在hex中): x20-x7e和x80-x9a 如何编写正确的正则表达式,以便替换所有不在20-7e和80-9a之间的字符 我试过这个: String fixed = value_.replaceAll("[^(\\x20-\\x7e|\\x80-\\x9a)]", ""); 但它不起作用。 更新: 我得到一个字符串,它只有介于x20-x7e之间的字符,所有其他字符,包括 已更换x80-x9a 如何在这两个范围之间使用或?为什么

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

x20-x7e
x80-x9a

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

我试过这个:

String fixed = value_.replaceAll("[^(\\x20-\\x7e|\\x80-\\x9a)]", "");
但它不起作用。 更新: 我得到一个字符串,它只有介于x20-x7e之间的字符,所有其他字符,包括 已更换x80-x9a

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

为什么不:

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

修复正则表达式语法,然后使用Unicode
\unnn

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

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

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

你说“不工作”是什么意思?你得到了什么输出?@Rohit Jain:我已经用我得到的结果进行了更新。因为问题是字符>=0x80,这可能是由于ASCII与Unicode的错误吗?我测试了代码,它对我有效。请发布您的输入字符串。