Java 如何删除除两位数字之间的点或逗号以外的所有非字母数字

Java 如何删除除两位数字之间的点或逗号以外的所有非字母数字,java,regex,string,expression,alpha,Java,Regex,String,Expression,Alpha,我已经搜索了很长时间,但不幸的是,正则表达式真的不适合我 我只想用一个空格来替换除两位数字(或加号)之间的点或逗号以外的所有非字母数字 例如: 欢迎访问由gskinner.com发布的RegExr v2.1,Media Temple自豪地主办-98.7 3.141.6180 9000 变成 欢迎使用gskinner com的RegExr v2.1,Media Temple 98.7 3.141 6180 9000自豪地主持 我知道这可以删除所有非字母数字:[^a-zA-Z0-9] 但我只想为两个

我已经搜索了很长时间,但不幸的是,正则表达式真的不适合我

我只想用一个空格来替换除两位数字(或加号)之间的点或逗号以外的所有非字母数字

例如: 欢迎访问由gskinner.com发布的RegExr v2.1,Media Temple自豪地主办-98.7 3.141.6180 9000

变成

欢迎使用gskinner com的RegExr v2.1,Media Temple 98.7 3.141 6180 9000自豪地主持

我知道这可以删除所有非字母数字:[^a-zA-Z0-9] 但我只想为两个数字之间的点或逗号添加一个例外(我已经测试过了)

谢谢你的帮助!;)

以上内容将选择您希望保留的文本

它选择字母字符+空格和带有可选嵌入的's和,'s.|'的数字用作布尔或。

请尝试以下操作:

str = str.replaceAll("[^a-zA-Z0-9 .,]|(?<!\\d)[.,]|[.,](?!\\d)", "");

str=str.replaceAll(“[^a-zA-Z0-9.,]”|(?将
\,
添加到范围中,以供参考。您不需要在字符类中转义一个点
str = str.replaceAll("[^a-zA-Z0-9 .,]|(?<!\\d)[.,]|[.,](?!\\d)", "");