如何在Java中仅使用正则表达式过滤其他字符?

时间:2015-09-25 06:53:32

标签: java regex

我编写了以下正则表达式来过滤Java中的其他字符:

this.myTextField.matches("[\\W]*");

问题是,这种表达过滤了额外的字符和变异的元音。

我需要一个只过滤<>!"§$%()=}{等附加字符的表达式,并且必须排除öäüß之类的变异元音。

2 个答案:

答案 0 :(得分:0)

尝试将[\\W]*替换为[^\\p{L}]*

\W表示不在[A-Za-z0-9_]范围内的任何内容,包括unicode字母。

\p{L},如图所示here是一个字符集,表示来自任何语言的任何类型的字母。因此,[^\p{L}]表示任何不是任何语言字母的字符。

答案 1 :(得分:0)

这是你想要的吗?

String dirtyString = " This*is#a*&very_dirty&String";
System.out.print(dirtyString.replaceAll("[^a-zA-Z0-9 ]"," ")); // Replace all with " "
                                                               // except a-z, A-Z, 0-9 
                                                               // and space.

// prints "This is a  very dirty String"