正则表达式吃太多东西

时间:2012-10-11 18:58:35

标签: java regex

所以我最近打开了一个问题并最终使用正则表达式来解决它。我使用的正则表达式基本上吃了我所有的非英文字符。

让我重试一遍:

我想吃掉字符串中可能存在的所有非键盘字符

我正在使用的正则表达式是:

[^\\p{L}\\p{N}]

然而,这会变成像

这样的东西

10/10/2012 10:51:25 AM

10102012105125AM

是否有某种方法可以轻松地从带有replaceALL的字符串中排除所有alt-code字符并保留键盘字符,如%/ \:和其他字符串完好无损?

谢谢!

3 个答案:

答案 0 :(得分:2)

您可能只想保存ASCII字符。角色范围[ -~]将实现这一目标。如果您还想要空白字符,可以将它们添加到:[ -~\s]

System.out.println(input.replaceAll("[^ -~\\s]+", ""));

答案 1 :(得分:1)

删除所有非ASCII字符:

String mystring = <your_input_string>;
mystring.replaceAll("[^ -~\\s]+", "");

答案 2 :(得分:0)

\p{Print}怎么样?它匹配所有可打印的字符,听起来就像你需要的那样。